扩展的对象功能

2017-02-27  本文已影响0人  云彩上的翅胖

对象字面量语法的扩展

属性初始化器的速记法

function createPerson(name,age){
    return {
    //当对象字面量的属性只有名称时,JS引擎会在周边作用域查找同名变量,若找到,该变量的值会被赋值给对象字面量的同名属性。
        name,
        age
    }
}

方法简写

var person={
    name:"NC",
    sayName() {
        return this.name;
    }
}

sayName方法被一个匿名函数赋值,并且能使用 super 。

需计算属性名

var suffix = " name";
var person = {
    ["first" + suffix]:"NC";
    ["last" + suffix]:"NC";
}

新的方法

Object.is()方法

用于弥补全等运算符的怪异点。

Object.is(NaN,NaN) //true
Object.is(+0,-0)   //false

Object.assign()方法

Object.assign()方法接受任意数量的供应者,而接受者会按照供应者在参数中的顺序依次接受他们的属性。

重复的对象字面量属性

当存在重复的属性时,后一个会覆盖前一个。

自有属性的枚举顺序

  1. 所有数字类型键,按升序进行排列。
  2. 所有字符串类型键,按添加顺序进行排列。
  3. 所有符号类型键,按顺序排列。

更强大的原型

修改对象的原型

使用Object.setPrototypeOf(target,proto)可以修改对象的原型。

使用super引用的简单原型访问

super实际上相当于 Object.getPrototypeOf(this)的值。但super的值不是动态的,而是指向当前对象的原型的一个指针。

只有使用简写的方法才能使用super

正式的“方法”定义

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

上一篇下一篇

猜你喜欢

热点阅读