<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
物件(object)是 JavaScript 最重要的資料結構。ES6 對它進行了重大升級
ES6 允許在大括號裡面,直接寫入變數和函數,作為物件的屬性和方法。這樣的書寫更加簡潔。
const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同於 const baz = {foo: foo};
上面程式碼中,變數foo直接寫在大括號裡面。這時,屬性名就是變數名, 屬性值就是變數值。下面是另一個例子。
function f(x, y) { return {x, y}; } // 等同於 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2}
下面是一個實際的例子。
let birth = '2000/01/01'; const Person = { name: '張三', //等同於birth: birth birth, // 等同於hello: function ()... hello() { console.log('我的名字是', this.name); } };
CommonJS 模組輸出一組變數,就非常合適使用簡潔寫法。
let ms = {}; function getItem (key) { return key in ms ? ms[key] : null; } function setItem (key, value) { ms[key] = value; } function clear () { ms = {}; } module.exports = { getItem, setItem, clear }; // 等同於 module.exports = { getItem: getItem, setItem: setItem, clear: clear };
JavaScript 定義物件的屬性,有兩種方法。
// 方法一 obj.foo = true; // 方法二 obj['a' + 'bc'] = 123;
上面程式碼的方法一是直接用識別符號作為屬性名,方法二是用表示式作為屬性名,這時要將表示式放在方括號之內。 ES6 允許字面量定義物件時,用方法二(表示式)作為物件的屬性名,即把表示式放在方括號內。
let propKey = 'foo'; let obj = { [propKey]: true, ['a' + 'bc']: 123 };
函數的name屬性,返回函數名。物件方法也是函數,因此也有name屬性。
const person = { sayName() { console.log('hello!'); }, }; person.sayName.name // "sayName"
上面程式碼中,方法的name屬性返回函數名(即方法名)。
《陣列的擴充套件》一章中,已經介紹過擴充套件運運算元(...)。ES2018 將這個運運算元引入了物件。 物件的解構賦值用於從一個物件取值,相當於將目標物件自身的所有可遍歷的(enumerable)、但尚未被讀取的屬性,分配到指定的物件上面。所有的鍵和它們的值,都會拷貝到新物件上面。
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; x // 1 y // 2 z // { a: 3, b: 4 }
ES5 比較兩個值是否相等,只有兩個運運算元:相等運運算元(==)和嚴格相等運運算元(===)。它們都有缺點,前者會自動轉換資料型別,後者的NaN不等於自身,以及+0等於-0。JavaScript 缺乏一種運算,在所有環境中,只要兩個值是一樣的,它們就應該相等。 ES6 提出“Same-value equality”(同值相等)演演算法,用來解決這個問題。Object.is就是部署這個演演算法的新方法。它用來比較兩個值是否嚴格相等,與嚴格比較運運算元(===)的行為基本一致。
Object.is('foo', 'foo') // true Object.is({}, {}) // false
不同之處只有兩個:一是+0不等於-0,二是NaN等於自身。
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
Object.assign()方法用於物件的合併,將源物件(source)的所有可列舉屬性,複製到目標物件(target)。
const target = { a: 1 }; const source1 = { b: 2 }; const source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3}
以上就是ECMAScript 6物件的擴充套件實現範例的詳細內容,更多關於ECMAScript 6物件擴充套件的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45