es6中新增对象的特性和方法
生活随笔
收集整理的這篇文章主要介紹了
es6中新增对象的特性和方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 對象簡寫
//曾經假如是這樣的var name = 'xxx'var obj = {name : name, say : function(){alert(this.name)}}//對象簡寫后var obj = {name,say(){alert(this.name)}}//簡單的說就是寫對象的時候把冒號以及左邊的key省了,直接寫變量名或者方法名,這個應用還是很廣泛的。2. 屬性名表達式
//曾經定義的時候可以這樣這樣var obj = { name : '小白',age : 20}//也可以這樣obj.name = '小白'obj['a' + 'ge'] = 20 //現在可以讓上面的兩種方式合體了。。。var name = 'name'var obj = {[name] : '小白', // 數組里用變量作為屬性名['a' + 'ge'] : 20}//看到沒,在字面量的情況下使用變量和字符串拼接定義屬性。。。合體了~console.log( obj[name], obj.age ) //name是變量//屬性名表達式跟那個中括號離不開,甚至寫方法的時候也可以這么搞var obj = {[name] : '小白', // 數組里用變量作為屬性名['a' + 'ge'] : 20,['say'+'Name'](){ // 函數名也可以用屬性名表達式return this[name]}}// 屬性名表達式與簡潔表示法 不能同時使用var name = '小白'var obj = {[name] //這樣是不對的,使用了屬性名表達式后,必須后面跟冒號,像往常寫法一樣}3. Object.assign 合并對象
var target = {}Object.assign(target, source1, source2, ...) // 所有source被合并到target中// 如果參數只有一個對象,那么assign則只返回這個對象。// assign是淺拷貝自身屬性,并且同名會被后面的覆蓋調,如果是非對象參數會被變成對象再做處理。4. super
//做java的看這個肯定很眼熟。。。//在js里。。this代表當前函數所屬對象,super代表當前函數所屬對象的原型對象也就是__proto__const proto = {x: 'hello',foo() {console.log(this.x);},};const obj = {x: 'world',foo() {super.foo();}}Object.setPrototypeOf(obj, proto);//obj調用foo方法后執行的super找到自身的proto下的foo方法執行了console.log(this.x),//一般來說這個this應該指向的離他最近的對象,但super后就變成了call調用并且修改自身this為 //obj, 所以輸出worldobj.foo() // "world"轉載于:https://www.cnblogs.com/sunheng/p/7918742.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的es6中新增对象的特性和方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Replacing the ESXi H
- 下一篇: Flash Builder 找不到所需的