es6中對象的屬性新增簡潔表示法、表達式表達法,對象新增Object.is方法和Object.assign方法。es6
一、屬性的簡潔表示法chrome
// 屬性的簡潔表示法,屬性名用變量名錶示,屬性值爲變量的值 var foo='abc' var obj={foo} obj // {foo: "abc"} //方法的簡潔表示法,須要注意,簡潔表示法的屬性名老是字符串 var obj={ class(){} } // 等價於,雖然IE9/firefox/chrome支持保留字直接做屬性名 ,但應儘可能避免這種寫法,須要加引號使用。var obj={ 'class': function(){} }
二、屬性的表達式表達法數組
var obj={} obj.name='mdj' obj['ac'+'dc']=123 obj // {name: "mdj", acdc: 123} var obj1={ ['h'+'i'](){return 'hi'} } obj1 //{hi: ƒ}
注意,屬性名錶達式與簡潔表示法,不能同時使用,會報錯。spa
// 報錯 var foo = 'bar'; var bar = 'abc'; var baz = { [foo] }; // 正確 var foo = 'bar'; var baz = { [foo]: 'abc'};
三、Object.is用來比較兩個值是否嚴格相等,與===功能相似,略有不一樣firefox
// 不一樣之處 NaN===NaN // false -0===+0 // true Object.is(NaN,NaN) // true Object.is(+0,-0) // false
四、Object.assign用於對象的合併,將源對象的全部可枚舉屬性複製到目標對象code
var target = { a: 1 }; var source1 = { b: 2,c:2 }; var source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3} // 須要注意,當有多個源對象時,後面的屬性會覆蓋前面的屬性,這裏source1的c屬性被覆蓋了
若是隻有一個參數,則直接返回,若是該參數不是對象,則會先轉換爲對象,若是沒法轉換爲對象,則報錯,如null、undefined對象
Object.assign({a:12}) //直接返回該對象
typeof Object.assign(2) // "object"
源對象能夠是數組和字符串,源對象的首參數必須有效,後面的參數若是無效,會直接跳過。blog
Object.assign({}, ['a','b']); //{0: "a", 1: "b"} Object.assign({}, 'ab'); //{0: "a", 1: "b"}