深入理解ES6之 物件

2022-11-24 19:31:17 字數 2246 閱讀 3736

在js中比較兩個值時,你可能會用相等運算子==或者嚴格相等運算子 ===。為了避免在比較時發生強制型別轉換,許多開發者更傾向於使用後者。

object.is()接受兩個引數,並且會在二者的值相等時返回true,此時要求二者的資料型別相同並且值也相等。

console.log(object.is(+0, -0)); //false

console.log(+0 == -0); //true

console.log(+0 === -0); //true

console.log(nan == nan);//false

console.log(nan === nan);//false

console.log(object.is(nan, nan));//true

在許多情況下,object.js()的結果與===運算子是相同的,僅有的例外是:它會認為+0與-0不相等,而且nan等於nan。

object.assign()可以設定一個物件從另一個物件接受屬性和方法。object.assign()接受任意數量的**者,而接受者會按照**者在引數的順序來依次接收他們的屬性。這意味著在接收者中,第二個**者的屬性可能會覆蓋第一個**者的

var recevier = {};

object.assign(recevier, , )

console.log(recevier);//

在es5的嚴格模式下,如果物件存在重複的屬性名,就會丟擲錯誤。在es6中無論嚴格模式還是非嚴格模式都不會丟擲錯誤。當存在重複屬性時,排在後面的屬性的值會成為該屬性的實際值。

一般來說,物件的原型會在通過構造器或object.create()方法建立該物件時被指定。es5可以通過object.getprototypeof()方法從任意物件中獲取其原型。

es6新增了object.setprototypeof()方法來修改任意制定物件的原型。它接受兩個引數:需要被修改原型的物件,以及將會成為前者原型的物件。

var person = 

};var dog =

};let friend = object.create(person);

object.setprototypeof(friend, dog);

console.log(friend.getgreeting());//woof

super是指向當前物件的原型的一個指標。

let friend = 

}object.setprototypeof(friend, person);

console.log(friend.getgreeting());//hello,hi

可以使用super引用來呼叫物件原型上的任何方法,只要這個引用是位於簡寫的方法之內。試圖在簡寫方法之外的情況使用super會導致語法錯誤。

使用多級繼承時,super引用就是非常強大的,因為這種情況下object.getprototypeof()不在適用於所有場景。

自由屬性列舉時基本順序如下:

所有的數字型別鍵,按升序排列

所有的字串型別鍵,按被新增到物件的順序排列

所有的符號型別鍵,按新增順序排列

var obj = 

obj.d = 1;

console.log(object.getownpropertynames(obj).join(""));//012acbd

在es6中,當物件的一個屬性名稱與本地變數名相同時,可以簡單書寫名稱而省略冒號和值

function createperson(name.age);

}

在es5及更早版本中,你必須制定一個名稱並用完整的函式定義來為物件新增方法。通過省略冒號和function關鍵字,es6將這個語法變得更簡潔。

var person = 

}

在es6中,需計算屬性名是物件字面量語法的一部分,它用的也是方括號表示法,與此前在物件例項上的用法一致。

var lastname = "last name";

var person =

console.log(person[lastname]);

物件字面量內的方括號表明該屬性需要計算,其結果是一個字串。意味著可以包含表示式:

var suffix = "name";

var person =

css之深入理解border

border style 設定4個邊框的樣式 p 定義和用法 border style屬性用於設定元素所有邊框的樣式,或者單獨為各邊設定邊框樣式。border style dotted solid double dashed border double的應用 二,border color與color...

深入理解css之absolute

1.絕對定位和float有一樣的特性,都有包裹性,和破壞性。2.absolute和relative 如果不把他們倆放在一起,absolute越獨立越強大。relative和absolute是分離的,對立的,絕不是什麼兄弟關係!獨立的absolute可以擺脫overflow的限制,無論是滾動還是隱藏 ...

深入理解css之float

1.float的歷史 float的設計的初衷 文字環繞效果 2.包裹與破壞 增強浮動的感性認知 包裹 1.收縮 2.堅挺 3.隔絕 裡面的佈局和外面一點關係都沒有 包裹的特性就是bfc block formatting context 塊級格式化上下文 具有包裹性的其他元素 display inli...