深入理解ES6四

ES6規范清晰的定義了對象的類別

  • 普通對象 具有JavaScript對象所有的默認內部行為
  • 特異對象 具有某些與默認行為不符的內部行為
  • 標準對象 ES6中規范定義的對象
  • 內建對象 腳本開始執行時存在于JavaScript執行環境中的對象,所有標準對象都是內建對象

對象字面量語法的擴展

  • 屬性初始化簡寫語法:當一個對象的屬性與本地變量同名時,不必要再寫冒號和值,簡單地只寫屬性名即可。當對象字面量里只有一個屬性的名稱時,JavaScript引擎會在可訪問作用域中查找其同名變量,如果找到,則該變量的值被復賦值給對象字面量里的同名屬性
function Person(name,age) {
    reutrn {
        name,
        age
    }
}
  • 對象方法的簡寫語法:消除了冒號和關鍵字function,與傳統對象方法的區別是簡寫方法可以使用super關鍵字
let person = {
    name:'tgb',
    sayName() {
        console.log(this.name);
    }
}
  • 可計算屬性名:在ES6中可以在對象字面量中使用可計算屬性名稱,對象字面中使用方括號表示該屬性名稱時可計算的
let suffix = 'name'
let person = {
    ['first'+suffix]: 'Nicholas',
    ['last'+suffix]:'Zakas'
}
console.log(person['first name']);
console.log(person['last name']);

ES6新增方法

  • Object.is()方法:這個方法接受兩個參數,如果兩個參數的類型相同且具有相同的值,則返回true。用來彌補全等運算符的不準確運算。
console.log(+0 === -0)  //true;
console.log(Object.is(+0,-0)); //false

console.log(NaN === Nan); //false
console.log(Object.is(NaN,NaN)) //true
  • Object.assign()方法:混入方法,這個方法接受一個對象和任意數量的源對象,最終返回接受對象
let obj = {};
Object.assign(obj,
    {
        type:'js';
        name:'file.js'
    },
    {
        type:'css  //如果多個源對象具有同名的屬性則排位靠后的源對象會覆蓋排位靠前的
    }
)
console.log(obj.type); //'css'
console.log(obj.name); //'file.js'

增強對象原型

  • ES6新增Object.setPrototypeOf()方法:這個方法可以改變任意指定對象的原型,它接受兩個參數;被改變的對象原型的對象以及要替代第一個參數原型的對象
let person = {
    getGreeting() {
        return 'Hello';
    }
};
let dog = {
    getGreeting() {
        return 'Woof'
    }
}
let friend = Object.create(person);
console.log(Object.getPrototypeOf(firend)===person); //true

Object.setPrototypeOf(friend,dog);
console.log(Object.getPrototypeOf(friend)===dog); //true
  • 簡化原型訪問的Super引用
    • Super引用相當于指向對象原型的指針,就是Object.getPrototypeOf(this)的值
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 三,字符串擴展 3.1 Unicode表示法 ES6 做出了改進,只要將碼點放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,575評論 0 8
  • 1.屬性的簡潔表示法 允許直接寫入變量和函數 上面代碼表明,ES6 允許在對象之中,直接寫變量。這時,屬性名為變量...
    雨飛飛雨閱讀 1,158評論 0 3
  • 一、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標準 ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,126評論 8 25
  • 屬性的簡潔表示法 ES6允許直接寫入變量和函數,作為對象的屬性和方法。這樣的書寫更加簡潔。 上面代碼表明,ES6允...
    呼呼哥閱讀 2,947評論 0 2
  • 我是日記星球的185號星寶寶,正在參加第八期的寫作訓練,這是我的第134篇日記 開心一天也是過,不開心一天也是過,...
    馨之芬芳閱讀 219評論 1 2