ES6規(guī)范清晰的定義了對象的類別
- 普通對象 具有JavaScript對象所有的默認(rèn)內(nèi)部行為
- 特異對象 具有某些與默認(rèn)行為不符的內(nèi)部行為
- 標(biāo)準(zhǔn)對象 ES6中規(guī)范定義的對象
- 內(nèi)建對象 腳本開始執(zhí)行時存在于JavaScript執(zhí)行環(huán)境中的對象,所有標(biāo)準(zhǔn)對象都是內(nèi)建對象
對象字面量語法的擴(kuò)展
- 屬性初始化簡寫語法:當(dāng)一個對象的屬性與本地變量同名時,不必要再寫冒號和值,簡單地只寫屬性名即可。當(dāng)對象字面量里只有一個屬性的名稱時,JavaScript引擎會在可訪問作用域中查找其同名變量,如果找到,則該變量的值被復(fù)賦值給對象字面量里的同名屬性
function Person(name,age) {
reutrn {
name,
age
}
}
- 對象方法的簡寫語法:消除了冒號和關(guān)鍵字
function,與傳統(tǒng)對象方法的區(qū)別是簡寫方法可以使用super關(guān)鍵字
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()方法:這個方法接受兩個參數(shù),如果兩個參數(shù)的類型相同且具有相同的值,則返回true。用來彌補(bǔ)全等運(yùn)算符的不準(zhǔn)確運(yùn)算。
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()方法:混入方法,這個方法接受一個對象和任意數(shù)量的源對象,最終返回接受對象
let obj = {};
Object.assign(obj,
{
type:'js';
name:'file.js'
},
{
type:'css //如果多個源對象具有同名的屬性則排位靠后的源對象會覆蓋排位靠前的
}
)
console.log(obj.type); //'css'
console.log(obj.name); //'file.js'
增強(qiáng)對象原型
- ES6新增
Object.setPrototypeOf()方法:這個方法可以改變?nèi)我庵付▽ο蟮脑?,它接受兩個參數(shù);被改變的對象原型的對象以及要替代第一個參數(shù)原型的對象
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引用相當(dāng)于指向?qū)ο笤偷闹羔槪褪荗bject.getPrototypeOf(this)的值
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。