ES6对对象的扩展非常多,本文只介绍自己感兴趣的若干,需要完整的请阅读文末原文。
属性的简洁表示法
ES6允许直接写入变量和方法,作为对象的属性和方法。这种写法更加简洁。
let x = 1;
let name = 'root';
// ES5
let obj = { x:x, name:name }; // { x:1, name:"root"}
// ES6
let obj2 = { x, name }; // { x:1, name:"root" }
上面代码表明,ES6允许在对象中直接写变量,属性名作为变量名,属性值作为变量值。
除了属性简写,方法也可以简写。
// ES6
const obj = {
print() {
return "Hello";
}
};
// 等同于
// ES5
const obj = {
print: function() {
return "Hello";
}
}
属性的遍历
ES6有5种方法可以遍历对象的属性。
- for...in
- Object.keys(obj)
- Object.getOwnPropertyNames(obj)
- Object.getOwnPropertySymbols(obj)
- Reflect.ownKeys(obj)
super关键字
ES6新增了一个关键字super
,指向当前对象的原型对象。
let proto = {
name: "proto",
};
let obj = {
name: "hello",
print() { cc.log(super.name);}
};
Object.setPrototypeOf(obj, proto);
obj.print() // "proto"
上面代码中,通过super.name
引用了原型对象proto的name属性。
注:本文原始内容来自 ES6标准入门,有修改。