<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
ES6中,當物件鍵名與對應值名相等的時候,可以進行簡寫
const baz = {foo:foo} // 等同於 const baz = {foo}
方法也能夠進行簡寫
const o = { method() { return "Hello!"; } }; // 等同於 const o = { method: function() { return "Hello!"; } }
在函數內作為返回值,也會變得方便很多
function getPoint() { const x = 1; const y = 10; return {x, y}; } getPoint() // {x:1, y:10}
注意:簡寫的物件方法不能用作建構函式,否則會報錯
const obj = { f() { this.foo = 'bar'; } }; new obj.f() // 報錯
ES6 允許字面量定義物件時,將表示式放在括號內
let lastWord = 'last word'; const a = { 'first word': 'hello', [lastWord]: 'world' }; a['first word'] // "hello" a[lastWord] // "world" a['last word'] // "world"
表示式還可以用於定義方法名
let obj = { ['h' + 'ello']() { return 'hi'; } }; obj.hello() // hi
注意,屬性名錶示式與簡潔表示法,不能同時使用,會報錯
// 報錯 const foo = 'bar'; const bar = 'abc'; const baz = { [foo] }; // 正確 const foo = 'bar'; const baz = { [foo]: 'abc'};
注意,屬性名錶示式如果是一個物件,預設情況下會自動將物件轉為字串[object Object]
const keyA = {a: 1}; const keyB = {b: 2}; const myObject = { [keyA]: 'valueA', [keyB]: 'valueB' }; myObject // Object {[object Object]: "valueB"
this關鍵字總是指向函數所在的當前物件,ES6 又新增了另一個類似的關鍵字super,指向當前物件的原型物件
const proto = { foo: 'hello' }; const obj = { foo: 'world', find() { return super.foo; } }; Object.setPrototypeOf(obj, proto); // 為obj設定原型物件 obj.find() // "hello"
在解構賦值中,未被讀取的可遍歷的屬性,分配到指定的物件上面
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; x // 1 y // 2 z // { a: 3, b: 4 }
注意:解構賦值必須是最後一個引數,否則會報錯
解構賦值是淺拷貝
let obj = { a: { b: 1 } }; let { ...x } = obj; obj.a.b = 2; // 修改obj裡面a屬性中鍵值 x.a.b // 2,影響到了結構出來x的值
物件的擴充套件運運算元等同於使用Object.assign()
方法
ES6 一共有 5 種方法可以遍歷物件的屬性。
上述遍歷,都遵守同樣的屬性遍歷的次序規則:
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 }) // ['2', '10', 'b', 'a', Symbol()]
關於物件新增的方法,分別有以下:
嚴格判斷兩個值是否相等,與嚴格比較運運算元(===)的行為基本一致,不同之處只有兩個:一是+0
不等於-0
,二是NaN
等於自身
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
Object.assign()
方法用於物件的合併,將源物件source
的所有可列舉屬性,複製到目標物件target
Object.assign()
方法的第一個引數是目標物件,後面的引數都是源物件
const target = { a: 1, b: 1 }; const source1 = { b: 2, c: 2 }; const source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3}
注意:Object.assign()
方法是淺拷貝,遇到同名屬性會進行替換
返回指定物件所有自身屬性(非繼承屬性)的描述物件
const obj = { foo: 123, get bar() { return 'abc' } }; Object.getOwnPropertyDescriptors(obj) // { foo: // { value: 123, // writable: true, // enumerable: true, // configurable: true }, // bar: // { get: [Function: get bar], // set: undefined, // enumerable: true, // configurable: true } }
Object.setPrototypeOf
方法用來設定一個物件的原型物件
Object.setPrototypeOf(object, prototype) // 用法 const o = Object.setPrototypeOf({}, null);
用於讀取一個物件的原型物件
Object.getPrototypeOf(obj);
返回自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵名的陣列
var obj = { foo: 'bar', baz: 42 }; Object.keys(obj) // ["foo", "baz"]
返回自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵對應值的陣列
const obj = { foo: 'bar', baz: 42 }; Object.values(obj) // ["bar", 42]
返回一個物件自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值對的陣列
const obj = { foo: 'bar', baz: 42 }; Object.entries(obj) // [ ["foo", "bar"], ["baz", 42] ]
用於將一個鍵值對陣列轉為物件
Object.fromEntries([ ['foo', 'bar'], ['baz', 42] ]) // { foo: "bar", baz: 42 }
到此這篇關於es6新增物件實用方法的文章就介紹到這了,更多相關es6新增物件方法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援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