对象的类别

  • 普通对象:拥有 JS 对象所有默认的内部行为。
  • 奇异对象:其内部行为在某些方面有别于默认行为。
  • 标准对象:在 ES6 中被定义的对象,例如 Array 、 Date ,等等。标准对象可以是普
    通的,也可以是奇异的。
  • 内置对象:在脚本开始运行时由 JS 运行环境提供的对象。所有的标准对象都是内置对
    象。

对象字面量语法的扩展

ES6 用几种方式扩展了对象字面量,将这种对象字面量语法变得更加强大、更加简洁。

属性初始化器的速记法

在 ES6 中,你可以使用属性初始化器的速记法来消除对象名称与本地变量的重复情况。当对象的一个属性名称与本地变量名相同时,你可以简单书写名称而省略冒号与值。例如,
createPerson() 可以像这样用 ES6 写:

function createPerson(name, age) {
    return {
        name,
        age
    };
}

当对象字面量中的属性只有名称时,JS引擎会在周边作用域查找同名变量。若找到,该变量的值将会被赋给对象字面量的同名属性。

方法简写

ES5:

var person = {
    name: "Nicholas",
    sayName: function() {
        console.log(this.name);
    }
};

ES6:

var person = {
    name: "Nicholas",
    sayName() {
        console.log(this.name);
    }
};

Object.is() 方法

此方法接受两个参数,并会在二者的值相等时返回 true ,此时要求二者类型相同并且值也相等。

Object.assign() 方法

Object.assign() 方法接受任意数量的供应者,而接收者会按照供应者在参数中的顺序来依次接收它们的属性。这意味着在接收者中,第二个供应者的属性可能会覆盖第一个供应者的

Object.getOwnPropertyNames() 自有属性的枚举顺序

自有属性枚举时基本顺序如下:

  • 所有的数字类型键,按升序排列。
  • 所有的字符串类型键,按被添加到对象的顺序排列。
  • 所有的符号类型键,也按添加顺序排列。

修改对象的原型

  • Object.getPrototypeOf():获取对象的原型
  • Object.setPrototypeOf():

super方法

super 是指向当前对象的原型的一个指针,实际上就是 Object.getPrototypeOf(this) 的值。

方法的定义

方法是一个拥有 [[HomeObject]]内部属性的函数,此内部属性指向该方法所属的对象。