对象

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。

对象的分类:

  1. 内建对象.
  2. 由ES标准中定义的对象,在任何的ES的实现中可以使用
  3. 比如:Math String Number Boolean Function Object...
  4. 宿主对象
  5. 由JS的运行环境提供的对象,目前来讲主要是指由浏览器提供的对象
  6. 比如BOM DOM
  7. 自定义对象
  8. 由开发人员自己创建的对象

对象的基本

对象的基本操作

  • 创建对象

    使用new关键字调用的函数,是构造函数----专门用来创建对象的函数。使用typeof检查对象,返回object

  • 添加对象属性
    obj.xxx = xxx;
  • 修改对象属性
    obj.xxx = xxx;
  • 删除对象属性
    delete obj.xxx;
  • 查看对象属性
    console.log(obj.xxx);

属性名

  • 对象属性名不强制要求遵守标识符的规范
  • 如果使用特殊属性名,不能采用 .的方式来操作。需要使用另一种方式

对象["属性名"] = 属性值

​ 存取一致。

  • 使用[]操作属性更加灵活。[]里可以直接传递一个变量,根据变量值读取相应属性。
var obj = new Object();
obj["233"] = 888;
var n = "233";
console.log(obj[n]);//888

属性值

可以是任意的数据类型。也可以是一个对象
console.log(obj1.obj.name);

in 运算符

​ 通过该运算符可以检查一个对象中是否含有指定的属性。如果有返回true,没有返回false

语法:"属性名" in 对象

console.log("test" in obj);

引用数据类型

保存的是地址,是引用.保存到堆内存中,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址。如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会收到影响。

基本数据类型【除了object的另外五种】,保存的是

var obj1= new Object();
var obj2 = obj1;
obj2 =null ;//这里是obj2的地址值设为null。不改变堆内存中的值
console.log(obj1); //object Object
var obj1= new Object();
var obj2 = obj1;
obj1.name ="奇奇怪怪" ;
obj1.sex = "男";
obj2.name ="dddd";
//删除,更改都会 对应的变
delete obj2.sex;
console.log(obj1.name); // dddd
console.log(obj2.sex); // undefined
console.log(obj1.miao); //undefined ,对象的属性会输出 未定义。

对象字面量

语法:{属性名:属性值,属性名:属性值..}

对象字面量属性名可以加引号也可以不加,建议不加。如果要使用一些特殊的名字,必须加引号。

属性名和属性值是一组一组的名值对结构,名和值之间使用链接,多个名值对之间使用隔开。最后的不加

var obj = {
    "name":"第三类",
    sex:"男",
    age:33,
    text:{name:"的第三个"} //{}里面的是值。赋给了 t
}

以工厂方法创建对象。

为了方便创建重复类型的对象,使用工厂方法。
function createObj(name , gender , age){
    var obj = new Object();
    obj.name = name ;
    obj.gender = gender;
    obj.age = age;
    obj.sayName = function (){
        console.log(this.name);
    }
    return obj;
}
var obj1 = createObj("miao","nan",16);
console.log(obj1);
obj1.sayName();

以构造函数的方式批量创建对象

创建一个构造函数,专门用来创建Person对象。

  • 构造函数就是一个普通的函数,创建方式和普通函数没有区别。。
  • 不同的是构造函数习惯上首字母大写

构造函数和普通函数的区别是调用方式不同

  • 普通函数普通调用,构造函数需要使用 new关键字来调用

构造函数的执行流程

  1. 立即创建一个新的对象
  2. 将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
  3. 逐行执行函数中的代码
  4. 将新建的对象作为返回值返回

使用同一个构造函数创建的对象,我们成为一类对象,也将一个构造函数称为一个类

​ 将通过一个构造函数创建的对象,称为该类的实例

function sayName (name){
    console.log(this.name);
}
function Person(name,gender,age){
    this.name = name ;
    this.gender = gender;
    this.age = age ;
    this.sayName = sayName;
}
var miao = new Person("hero","nan",15);
console.log(miao);
miao.sayName(); /

构造函数修改

方法定义在构造函数内部,每执行一次构造函数,就会创建一个对象方法 。 ====>

将对象的方法在全局作用域中定义。

function fun(){
    
}
function Person(name,age){
    this.name =name;
    this.age = age;
    this.sayName = fun;
}

var  per1 = new Person();
var  per2 = new Person();
console.log(per1.sayName == per2.sayName);//true
最后修改:2022 年 01 月 08 日
如果觉得我的文章对你有用,请随意赞赏