浅学es6对象的扩展
1.属性的简介表示法
const foo ='bar'
const baz = {foo}
baz //{foo:'bar'}
//等同于baz = {foo:foo}
let lastWord ='last word'
const a= {
'first word':'hello',
[lastWord]:'world'}
a['first word']
}
// 'hello'a[lastWord]
// 'world'a['last word']
// 'world'
注意属性名表达式于简介表达式,不能同时使用
//报错
const foo ='bar'
const bar ='abc'
const baz = {[foo]}
//正确
const foo ='bar';
const baz = {[foo]:'abc'}
函数name属性,返回函数名
比较两个值是否严格相等,相当于(===)
用于对象的合并
const target ={a:1}
const source1 ={b:2}
const source2 ={c:3}
Object.assign(target,source1,source2)
target//{a:1,b:2,c:3}
注意如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性
克隆对象
function clone(origin) { returnObject.assign({},origin); }
属性的遍历 ES6一共有五种方法可以遍历对象的属性
循环遍历对象自身和继承的可枚举属性
返回一个数组,包括对象自身的(不可继承的)所有可枚举属性(不含Symbol属性)的键名
(3)Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。
(4)Object.getOwnPropertySymbols(obj)
返回一个数组,包含对象自身的所有 Symbol 属性的键名。
返回一个数组,包含对象自身的所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
4.__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
下面代码将proto对象设为obj对象的原型,所以obj对象可以读取proto对象的属性
let proto = {}
let obj = {x:10}
Object.setPrototypeOf(obj,proto);
proto.y =20
proto.z =40
obj.x// 10
obj.y// 20
obj.z// 40
关键字super,指向当前对象的原型对象
注意super关键字表示原型对象是,之恩给你用在对象的方法之中,用在其他地方都会报错