对象字面量语法的扩展
属性初始化器的速记法
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()
方法接受任意数量的供应者,而接受者会按照供应者在参数中的顺序依次接受他们的属性。
重复的对象字面量属性
当存在重复的属性时,后一个会覆盖前一个。
自有属性的枚举顺序
- 所有数字类型键,按升序进行排列。
- 所有字符串类型键,按添加顺序进行排列。
- 所有符号类型键,按顺序排列。
更强大的原型
修改对象的原型
使用Object.setPrototypeOf(target,proto)
可以修改对象的原型。
使用super
引用的简单原型访问
super
实际上相当于 Object.getPrototypeOf(this)的值。但super
的值不是动态的,而是指向当前对象的原型的一个指针。
只有使用简写的方法才能使用super
。
正式的“方法”定义
方法是一个拥有[[HomeObject]]
内部属性的函数,此内部属性指向该方法所属的对象。