JS对象与函数初相识

目录

什么是对象?

对象的意义

对象的分类

对象的基本操作

1:创建对象

2:向对象添加属性

[3: 读取对象中的属性](#3: 读取对象中的属性)

[4: 修改对象的属性值](#4: 修改对象的属性值)

​编辑

[5: 删除对象的属性](#5: 删除对象的属性)

对象的属性值与属性名

1、属性名:

2、属性值

3、in运算符

什么是函数?

函数的使用

声明函数有三种:

[第一种方式 创建一个构造函数对象](#第一种方式 创建一个构造函数对象)

[第二种方式 使用函数声明来创建一个函数(常用)](#第二种方式 使用函数声明来创建一个函数(常用))

[第三种方式 匿名函数 使用函数表达式来创建一个函数](#第三种方式 匿名函数 使用函数表达式来创建一个函数)

调用函数

函数的参数

形参:

实参:

参数的作用:

形参和实参匹配的问题

方法:


什么是对象?

在现实生活中,万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如一本书,一辆汽车,一个人可以是"对象",一个数据库,一张网页,一个与远程服务器的连接也可以是"对象"。

**在JS里,对象是一组无序的相关属性和方法的集合,**所有的实物都是对象,例如字符串、数值、数组、函数等

例如:按钮

属性:大小,背景色,字体颜色,圆角

方式:点击跳转


对象的意义

保存一个值时,可以使用变量

保存多个值(一组值)时,可以使用数组。但数组元素之间信息不连贯,无连接,表达不清楚

对象的目的:是为了保存一组 无序的相关 的数据

JS中的对象表达结构更清晰,更强大。

例如:保存一个人完整的信息


对象的分类

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性,让信息与信息之间有联系,关系明确,操作起来也更加方便(能使用一些对象才能用的属性方法)

1.内建(置)对象--有ES标准中定义的对象,在任何的ES的实现中都可以使用,eg:Math String Boolean function object,Array······

2:宿主对象--由JS的运行环境提供的对象,目前来讲,主要指浏览器提供的对象,eg:BOM(浏览器对象模型) DOM(文档对象模型) 两组对象,里面各自都有很多

3:自定义对象--由开发人员创建的对象


对象的基本操作

1:创建对象

使用new关键字调用的构造函数,创建对象obj

使用typeof检查

2:向对象添加属性

语法1:对象.属性名=属性值;

需求:在对象obj中添加name,gender,age属性

语法2:对象[属性名]=属性值;

注意:一般情况用语法1即可,在属性名为变量,数字,特殊字符时只能用语法2

3: 读取对象中的属性

语法:对象.属性名

如果读取对象中没有的属性,不会报错,而会返回undefined

需求:输出对象obj的name属性

javascript 复制代码
let per = new Object();
per.age = 18;
      per.name = "jack";
      per.height = 180;
      // 读取对象中的属性
      console.log(per.age);
      console.log(per.sex); //读取对象没有的属性,并不会报错,返回undefined
      console.log(per['@123']);
4: 修改对象的属性值

语法:对象.属性名=新值

需求:修改对象的name属性为'jack'

javascript 复制代码
  // 修改对象的属性值;
    // 如果修改的是对象有的属性,就是修改,修改的是对象没有的属性,就是新增
    per.age = 20; //修改
    per.sex = "男"; //新增
    per["@123"] = 456;
5: 删除对象的属性

语法:delete 对象.属性名

需求:删除对象obj的年龄属性

javascript 复制代码
  // 删除对象的属性
    // delete per.sex;
    // delete per.age
    delete per["@123"];

对象的属性值与属性名

1、属性名:

对象的属性名不强制性要求遵守标识符号的规范,什么名字都可以使用,但是我们使用还是尽量按照标识符的规范去做

如果要使用特殊的属性名 ,例如数字,不能采用"."的方式来操作需要使用另一种方式'[]':

语法:对象["属性名"]=属性值

读取时也需要采用这种方式

使用[]这种形式去操作属性,更加灵活,

在[]中可以直接传递一个变量,这样变量值是多少就会读哪个属性

2、属性值

JS对象的属性值,可以是任意的数据类型,甚至可以是对象

javascript 复制代码
obj.test = true;
obj.test = undefined;
obj.test = "true";
obj.test = 123;
// 创建一个对象
var obj2 = new Object();
obj2.name = "猪八戒";
obj.test = obj2;
3、in运算符

通过该运算符可以检查一个对象中是否含有指定的属性

如果有则返回true,没有则返回false

语法:"属性名" in 对象


什么是函数?

在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码需要大量重复使用

函数: 就是封装一段可被重复调用执行的代码块。通过代码块可以实现在需要的的重复使用,使用typeof检查一个函数对象时,会返回function

函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,简单理解:将很多衣服打包到一个行李箱,jQuery就是一个函数封装库,对外暴露一个顶级对象$

函数的使用

函数在使用时分为两步:声明函数和调用函数

声明函数有三种:
第一种方式 创建一个构造函数对象

我们在实际开发中很少使用构造函数来创建一个函数对象

可以将要封装的代码以字符串的形式传递给构造函数

封装到函数中的代码不会立即执行,函数中的代码会在函数调用的时候执行

javascript 复制代码
var fun = new Function("console.log('hello 这是我的第一个函数')");
console.log(typeof fun);//function
fun();
第二种方式 使用函数声明来创建一个函数(常用)

语法:

javascript 复制代码
 function 函数名([形参1,形参2,形参3,形参4....形参n]){
 	执行语句.....
 }
javascript 复制代码
 function fun2() {
    console.log("这是我的第二个函数~~~");
    alert("hahahaha");
    document.write("wuwuwuwu");
  }
第三种方式 匿名函数 使用函数表达式来创建一个函数

语法:

javascript 复制代码
    var  变量名=function([形参1,形参2...形参n]){

            语句.....

         }
javascript 复制代码
var fun3 = function () {
    console.log("我是匿名函数中的封装的代码");
}; //相当于赋值语句
fun3(); //调用函数

注意:

由于函数一般是为了实现某个功能才定义的,所以通常我们将函数名命名为动词,例如getsum


调用函数

调用函数语法:变量名/函数名()

当调用函数时,函数中封装的代码会按照顺序执行


函数的参数

在声明函数时,可以在函数名称后面的小括号里添加一些参数,这些参数是形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称谓实参。

形参

形式上的参数,函数定义的时候,传递的参数,当前并不知道是什么,用来接收实参的,形参类似一个变量,声明了并未赋值**,**多个形参之间用逗号隔开

实参

实际上的参数,函数调用的时候传递的参数,实参是传递给形参,相当于给形参赋值

**注意:**实参可以是任何类型

可以是一个对象,当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递

实参可以是一个对象,也可以是一个函数

javascript 复制代码
   //将参数封装到对象中传递
      function sayhello(o) {
        //console.log("o="+o);//对象
        console.log("我是" + o.name + ",今年" + o.age + "岁了," + 
        "我是一个" + o.gender + "人" + ",我住在" + o.address);
      }
       //创建一个对象
      var obj = new Object();
      obj.name = "孙悟空";
      obj.age = 18;
      obj.gender = "男";
      obj.address = "花果山";
      sayhello(obj); //可以直接全部赋值

//实参可以是一个函数
      function fun(a) {
        //console.log("a="+a);
        a(obj);
      }
      fun(sayhello);

      /* 
      sayhello()
         -调用函数
         -相当于使用的函数的返回值
         -机器作出的东西
         
      sayhello
         -函数对象
         -相当于直接使用函数对象
         -机器 
      */

参数的作用

在函数内部某些值不能固定的时候,我们可以通过参数在调用函数时传递不同的值进去

语法结构:

javascript 复制代码
 function 函数名(形参1,形参2····形参n){//声明函数的小括号里的是形参(形式上的参数)
 执行语句.....
 }
函数名(实参1,实参2····)//在函数调用的小括号里面是实参(实际参数)
形参和实参匹配的问题

如果形参和实参的个数一致,则正常输出结果

如果实参的个数多于形参的个数,会取形参的个数

如果实参的个数小于形参的个数,多余的形参默认定义为undefined

调用函数时,解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,函数的实参可以是任意的数据类型

建议形参和实参个数一致


方法:

对象中的函数属性就叫"方法"

javascript 复制代码
//方式一
per.sayHi = function () {
          console.log("hello");
        };

//方式二
let fun = function () {
          console.log("hello");
        };
        per.sayHi = fun;

//输出
 per.sayHi = fun;
    console.log(per.sayHi);
    per.sayHi();
相关推荐
晔子yy2 小时前
说一下Java的垃圾回收机制
java·开发语言
ヤ鬧鬧o.2 小时前
HTML安全密码备忘录
前端·javascript·css·html·css3
superman超哥2 小时前
Rust 与数据库连接池的集成:从理论到生产实践
开发语言·rust·编程语言·rust与数据库连接池的集成
ヤ鬧鬧o.2 小时前
小巧路径转换器优化
前端·javascript·css
fl1768312 小时前
基于python+tkinter实现的Modbus-RTU 通信工具+数据可视化源码
开发语言·python·信息可视化
cyforkk2 小时前
01、Java基础入门:JDK、JRE、JVM关系详解及开发流程
java·开发语言·jvm
黎雁·泠崖2 小时前
Java static避坑:静态与非静态访问规则全解析
java·开发语言
掘根2 小时前
【jsonRpc项目】基本的宏定义,抽象层和具象层的实现
开发语言·qt
步步为营DotNet2 小时前
深度解析.NET中IEnumerable<T>.SelectMany:数据扁平化与复杂映射的利器
java·开发语言·.net