国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6 對象的新功能與解構賦值介紹

2024-05-06 15:42:38
字體:
來源:轉載
供稿:網友

ES6 通過字面量語法擴展、新增方法、改進原型等多種方式加強對象的使用,并通過解構簡化對象的數據提取過程。

一、字面量語法擴展

在 ES6 模式下使用字面量創建對象更加簡潔,對于對象屬性來說,屬性初始值可以簡寫,并可以使用可計算的屬性名稱。對象方法的定義消除了冒號和 function 關鍵字,示例如下:

// Demo1var value = "name", age = 18var person = { age, // age: age ['my' + value]: 'Jenny', // myname sayName () { // sayName: function()  console.log(this.myname) }}console.log(person.age) // 18console.log(person.myname) // Jennyperson.sayName(); // Jenny

針對重復定義的對象字面量屬性,ES5嚴格模式下會進行重復屬性檢查從而拋出錯誤,而ES6移除了這個機制,無論嚴格模式還是非嚴格模式,同名屬性都會取最后一個值。

// demo2var person = { ['my' + value]: 'Jenny', myname: 'Tom', myname: 'Lee',}console.log(person.myname) // Lee

二、新增方法

從 ES5 開始遵循的一個設計目標是,避免創建新的全局函數,也不在object.prototype上創建新的方法。

為了是某些任務更容易實現,ES6 在全局 Object 對象上引入一些新的方法。

2.1 Object.is( )

ES6 引入Object.is()方法來彌補全等運算符的不準確計算。

全等運算符在比較時不會觸發強制轉換類型,Object.is()運行結果也類似,但對于 +0 和 -0(在 JS 引擎中為兩個不同實體)以及特殊值NaN的比較結果不同,示例來看:

// demo3console.log(5 == '5') // trueconsole.log(5 === '5') // falseconsole.log(Object.is(5, '5')) // falseconsole.log(+0 == -0) // trueconsole.log(+0 === -0) // trueconsole.log(Object.is(+0, -0)) // falseconsole.log(NaN == NaN) // falseconsole.log(NaN === NaN) // falseconsole.log(Object.is(NaN, NaN)) // true

總結來說,Object.is()對所有值進行了更嚴格等價判斷。當然,是否使用Object.is()代替全等操作符(===)取決于這些特殊情況是否影響代碼。

2.2 Object.assign( )

ES6 添加Object.assign()來實現混合(Mixin)模式,即一個對象接收另一個對象的屬性和方法。注意是接收而不是繼承,例如接收 demo1 中的對象:

// demo4var friend = {}Object.assign(friend, person)friend.sayName() // Jennyconsole.log(friend.age) // 18console.log(Object.getPrototypeOf(friend) === person) // false

在Object.assign()之前,許多 JS 庫自定義了混合方法 mixin( ) 來實現對象組合,代碼類似于:

function mixin(receiver, supplier) { Object.keys(supplier).forEach(function (key) {  receiver[key] = supplier[key] }) return receiver}

可以看出 mixin( ) 方法使用“=”賦值操作,并不能復制訪問器屬性,同理Object.assign()也不能復制訪問器屬性,只是執行了賦值操作,訪問器屬性最終會轉變為接收對象的數據屬性。示例如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 美姑县| 内乡县| 南郑县| 盱眙县| 大石桥市| 电白县| 涿鹿县| 胶南市| 绥江县| 永登县| 乌鲁木齐市| 新安县| 渑池县| 东阿县| 泗水县| 宁波市| 溧阳市| 新龙县| 兴安县| 微博| 灵山县| 习水县| 东阿县| 扶沟县| 平远县| 彰化市| 健康| 高平市| 桃园市| 苍梧县| 利川市| 旅游| 贞丰县| 卓资县| 浪卡子县| 县级市| 海门市| 滁州市| 廉江市| 雷山县| 汝州市|