1于个、屬性方法的簡(jiǎn)潔表示
屬性簡(jiǎn)寫(xiě)
var foo='foo';
var goo= {'foo':foo};可以寫(xiě)成const goo={foo};
方法簡(jiǎn)寫(xiě)
var obj={
? ? fun:function(){
????????return 'test';
????}
};
可以寫(xiě)成
var?obj={
? ? fun(){return 'test';}
};
2、屬性名表達(dá)式?
var obj={
? ? "name":"cc",
????"age":22
};
var fieldc = "field"+3;
如果其中有屬性為表達(dá)式营罢,在ES5中就必須通過(guò)obj[fieldc?]來(lái)賦值
ES6中可以寫(xiě)成
var obj={
? ? ["name"]:"cc",
? ? ["age"]:22,
? ?[fieldc?]:""
};
3炼邀、對(duì)象比較
ES5比較兩個(gè)值是否相等槽片,只有兩個(gè)運(yùn)算符:相等運(yùn)算符(==)和嚴(yán)格相等運(yùn)算符(===)。它們都有缺點(diǎn)随橘,前者會(huì)自動(dòng)轉(zhuǎn)換數(shù)據(jù)類(lèi)型,后者的NaN不等于自身锦庸,以及+0等于-0机蔗。
ES6提出“Same-value equality”(同值相等)算法,用來(lái)解決這個(gè)問(wèn)題甘萧。Object.is就是部署這個(gè)算法的新方法蜒车。它用來(lái)比較兩個(gè)值是否嚴(yán)格相等,與嚴(yán)格比較運(yùn)算符(===)的行為基本一致幔嗦。
+0 === -0//true
NaN === NaN// false
Object.is(+0, -0)// false
Object.is(NaN, NaN)// true
4酿愧、Object.assign
Object.assign方法用于對(duì)象的合并,將源對(duì)象(source)的所有可枚舉屬性邀泉,復(fù)制到目標(biāo)對(duì)象(target)嬉挡。注意,如果目標(biāo)對(duì)象與源對(duì)象有同名屬性汇恤,或多個(gè)源對(duì)象有同名屬性庞钢,則后面的屬性會(huì)覆蓋前面的屬性。
①如果只有一個(gè)參數(shù)因谎,Object.assign() 會(huì)直接返回該參數(shù)
Object.assign({a:"new"})//{a:"new"}
②如果該參數(shù)不是對(duì)象基括,會(huì)將該參數(shù)轉(zhuǎn)化為對(duì)象,
typeofObject.assign(0)// "object"
③undefined 和 null 作為首參數(shù)會(huì)報(bào)錯(cuò)财岔,不為首參時(shí)也不會(huì)報(bào)錯(cuò)
Object.assign(undefined)// 報(bào)錯(cuò) Cannot convert undefined or null to objectObject.assign({},undefined)// 空對(duì)象 {}
④字符串會(huì)以數(shù)組形式拷貝到目標(biāo)對(duì)象风皿,而數(shù)值和布爾值等不會(huì)產(chǎn)生效果
⑤Object.assign 只拷貝源對(duì)象的自身屬性(不會(huì)拷貝繼承屬性),也不會(huì)拷貝不可枚舉的屬性匠璧。
Object.assign()桐款,會(huì)忽略enumerable為false的屬性,只拷貝對(duì)象自身的可枚舉的屬性夷恍。
ES5中有三個(gè)操作會(huì)忽略:
for...in循環(huán):只遍歷對(duì)象自身的和繼承的可枚舉的屬性魔眨。
Object.keys():返回對(duì)象自身的所有可枚舉的屬性的鍵名。
JSON.stringify():只串行化對(duì)象自身的可枚舉的屬性酿雪。
5遏暴、屬性的遍歷
for…in? ? ? ?
# for…in循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性(不含 Symbol 屬性)。
Object.keys(obj)? ? ? ? ?
# Object.keys返回一個(gè)數(shù)組指黎,包括對(duì)象自身的(不含繼承的)所有可枚舉屬性(不含 Symbol 屬性)的鍵名朋凉。
Object.getOwnPropertyNames(obj)? ? ??
# Object.getOwnPropertyNames返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性(不含 Symbol 屬性袋励,但是包括不可枚舉屬性)侥啤。
Object.getOwnPropertySymbols(obj)
# Object.getOwnPropertySymbols返回一個(gè)數(shù)組当叭,包含對(duì)象自身的所有 Symbol 屬性。
Reflect.ownKeys(obj)
# Reflect.ownKeys返回一個(gè)數(shù)組盖灸,包含對(duì)象自身的所有屬性蚁鳖,不管屬性名是 Symbol 或字符串,也不管是否可枚舉赁炎。
遍歷排序:數(shù)字屬性——>字符串屬性——>Symbol值屬性