ES6对象(1):新增语法与API
目錄
一.新增的對(duì)象字面量語(yǔ)法
1.成員速寫(xiě)
?2.方法速寫(xiě)
3.計(jì)算屬性名
二.Object的新增API
1.Object.is
2.Object.assign
3.Object.getOwnPropertyNames的枚舉順序
4.Object.setPrototypeOf
一.新增的對(duì)象字面量語(yǔ)法
1.成員速寫(xiě)
如果對(duì)象字面量初始化時(shí),成員的名稱(chēng)來(lái)自于一個(gè)變量,并且和變量名的名稱(chēng)相同,則可以進(jìn)行簡(jiǎn)寫(xiě)
【例1-1】
之前的寫(xiě)法
function personMes(name, sex, age, address) {return {name : name,sex : sex,age : age,address: address,} } const person = personMes('jwh', 'female', 18, '陜西省'); console.log(person);ES6寫(xiě)法
function personMes(name,sex,age,address) {return{name,sex,age,address} } const person = personMes('jwh', 'female', 18, '陜西省'); console.log(person);?2.方法速寫(xiě)
對(duì)象字面初始化時(shí),方法可以省略冒號(hào)和function關(guān)鍵字
【例1-2】
之前的寫(xiě)法
const init = {name : 'jwh',age : 18,print: function () {console.log(this.name, this.age);} } init.print();ES6寫(xiě)法
const init = {name : 'jwh',age : 18,print() {console.log(this.name, this.age);} } init.print();3.計(jì)算屬性名
有的時(shí)候,初始化對(duì)象時(shí),某些屬性名可能來(lái)自于某個(gè)表達(dá)式的值,在ES6中,可以使用中括號(hào)來(lái)表示該屬性名是通過(guò)計(jì)算得到的。
【例1-3】
const prop1 = 'name'; const prop2 = 'age'; const prop3 = 'print'; const user = {[prop1] : 'jwh',[prop2] : 18,[prop3] () {console.log(this[prop1] ,this[prop2])} } user[prop3](); console.log(user);二.Object的新增API
1.Object.is
用于判斷兩個(gè)數(shù)據(jù)是否相等,基本上跟嚴(yán)格相等(===)是一致的,除了以下兩點(diǎn)
- NaN和NaN相等
- +0和-0不相等
【例2-1】
console.log('NaN === NaN的結(jié)果', NaN === NaN); console.log('Object.is(NaN, NaN)', Object.is(NaN, NaN)); console.log('+0 === -0的結(jié)果', +0 === -0); console.log('Object.is(+0, -0)',Object.is(+0, -0));【結(jié)果】
圖2-12.Object.assign
用于混合對(duì)象,Object.assign(obj1, obj2,...),將所有對(duì)象按照順序混合到第一個(gè)對(duì)象上,若obj1沒(méi)有的屬性則直接添加,若obj1有該屬性,則進(jìn)行覆蓋。
【例2-2】
obj1 = {name: 'jwh',age: 18,sex: 'female' } obj2 = {grade: 1,number: 1901210214,name: 'ths' } obj3 = {address: 2313,grade: 2 } Object.assign(obj1, obj2, obj3); console.log('obj1:', obj1); console.log('obj2:', obj2); console.log('obj3:', obj3)【結(jié)果】
圖2-23.Object.getOwnPropertyNames的枚舉順序
Object.getOwnPropertyNames方法之前就存在,只不過(guò)官方?jīng)]有明確要求對(duì)屬性的順序如何排序,具體如何排序,完全由瀏覽廠商決定。ES6規(guī)定了該方法返回的數(shù)組的排序方式如下
- 先排數(shù)字,并按照升序排列
- 再排其他,按照書(shū)寫(xiě)順序排序
【例2-3】
obj1 = {2: 'grade',name: 'jwh',1: 'address',age: 18,sex: 'female', } console.log(Object.getOwnPropertyNames(obj1));【結(jié)果】
圖2-34.Object.setPrototypeOf
該函數(shù)用于設(shè)置某個(gè)對(duì)象的隱式原型,比如Object.setPrototypeOd(obj1, obj2),相當(dāng)于obj1.__proto__ = obj2.__proto__
【例2-4】不設(shè)置的話,obj1的隱式原型是Object
obj1 = {name: 'jwh',age: 18,sex: 'female' } obj2 = {grade: 1,number: 1901210214 } Object.setPrototypeOf(obj1, obj2) console.log(obj1);【結(jié)果】
圖2-4總結(jié)
以上是生活随笔為你收集整理的ES6对象(1):新增语法与API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ES6函数第三篇:函数篇(新增API与箭
- 下一篇: ES6对象(2):面向对象与类