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)的值
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。