es6基礎之物件的擴充套件

2021-09-13 18:01:49 字數 1454 閱讀 6094

本文源自阮老師的es6入門教程,為了之後方便自己隨時檢視,將常用的es6部分整理了一下

傳送門解構賦值

物件的解構賦值用於從乙個物件取值,相當於將目標物件自身的所有可遍歷的(enumerable)、但尚未被讀取的屬性,分配到指定的物件上面。所有的鍵和它們的值,都會拷貝到新物件上面

123

4

let  = ;

x // 1

y // 2

z //

上面**中,變數z是解構賦值所在的物件。它獲取等號右邊的所有尚未讀取的鍵(a和b),將它們連同值一起拷貝過來。

由於解構賦值要求等號右邊是乙個物件,所以如果等號右邊是undefined或null,就會報錯,因為它們無法轉為物件。

1

2

let  = null; // 執行時錯誤

let = undefined; // 執行時錯誤

解構賦值必須是最後乙個引數,否則會報錯。

1

2

let  = someobject; // 句法錯誤

let = someobject; // 句法錯誤

上面**中,解構賦值不是最後乙個引數,所以會報錯

注意,解構賦值的拷貝是淺拷貝,即如果乙個鍵的值是復合型別的值(陣列、物件、函式)、那麼解構賦值拷貝的是這個值的引用,而不是這個值的副本

123

4

let obj =  };

let = obj;

obj.a.b = 2;

x.a.b // 2

上面**中,x是解構賦值所在的物件,拷貝了物件obj的a屬性。a屬性引用了乙個物件,修改這個物件的值,會影響到解構賦值對它的引用。

擴充套件運算子

物件的擴充套件運算子(…)用於取出引數物件的所有可遍歷屬性,拷貝到當前物件之中。

123

let z = ;

let n = ;

n //

由於陣列是特殊的物件,所以物件的擴充套件運算子也可以用於陣列。

123

let foo = ;

foo//

如果擴充套件運算子後面不是物件,則會自動將其轉為物件

1

2

// 等同於 

// {}

上面**中,擴充套件運算子後面是整數1,會自動轉為數值的包裝物件number。由於該物件沒有自身屬性,所以返回乙個空物件。

但是,如果擴充套件運算子後面是字串,它會自動轉成乙個類似陣列的物件,因此返回的不是空物件

1

2

//

ES6 細化ES6之 物件的擴充套件

物件的屬性 屬性表示法es6 允許在大括號裡面,直接寫入變數和函式,作為物件的屬性和方法 es5 let name 張無忌 function sayme es5定義物件的屬性和方法的方式 var obj console.log obj.name 張無忌es6 let name 張無忌 functio...

ES6語法之物件的擴充套件

你可能寫過這樣的 使用和所分配的變數名稱相同的名稱初始化物件。let type quartz let color rose let carat 21.29 const gemstone console.log gemstone 看到重複的地方了嗎?type type color color和cara...

ES6 之 Math物件的擴充套件

console.log math.trunc 3.5 3 console.log math.trunc 3.5 3 對於非數值,math.trunc 內部使用number 方法先將其轉化為數值 console.log math.trunc 123.456 123 console.log math.t...