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關鍵字表示原型對象是,之恩給你用在對象的方法之中,用在其他地方都會報錯