ES6語法之物件的擴充套件

2021-09-14 05:08:41 字數 2877 閱讀 8507

你可能寫過這樣的**:使用和所分配的變數名稱相同的名稱初始化物件。

let type = 'quartz';

let color = 'rose';

let carat = 21.29;

const gemstone = ;

console.log(gemstone);

看到重複的地方了嗎?type: type、color: colorcarat:carat不顯得很冗長嗎?

好訊息是,如果屬性名稱和所分配的變數名稱一樣,那麼就可以從物件屬性中刪掉這些重複的變數名稱。

我們來看看!

let type = 'quartz';

let color = 'rose';

let carat = 21.29;

const gemstone = ;

還有一種向物件中新增方法的簡寫方式。

let type = 'quartz';

let color = 'rose';

let carat = 21.29;

let gemstone =

};

在 es6 中甚至連function關鍵字也不需要.

有時候我們會在後台取出key值,而不是我們前台定義好的,這時候我們如何構建我們的key值呢。比如我們在後台取了乙個key值,然後可以用[ ]的形式,進行物件的構建。

let key='skill';

let obj=

console.log(obj.skill);

es5 比較兩個值是否相等,只有兩個運算子:相等運算子==和嚴格相等運算子===。它們都有缺點,前者會自動轉換資料型別,後者的nan不等於自身,以及+0等於-0;

es6提出「same-value equality」(同值相等)演算法,用來解決這個問題。object.is就是部署這個演算法的新方法。它用來比較兩個值是否嚴格相等,與嚴格比較運算子===的行為基本一致。

object.is('foo', 'foo')

// true

object.is({}, {})

// false

+0 === -0 //true

nan === nan // false

object.is(+0, -0) // false

object.is(nan, nan) // true

object.assign方法用於物件的合併,將源物件(source)的所有可列舉屬性,複製到目標物件(target)

object.assign方法的第乙個引數是目標物件,後面的引數都是源物件。

const target = ;

const source1 = ;

const source2 = ;

object.assign(target, source1, source2);

console.log(target) //

同名屬性

如果目標物件與源物件有同名屬性,或多個源物件有同名屬性,則後面的屬性會覆蓋前面的屬性。

const target = ;

const source1 = ;

const source2 = ;

object.assign(target, source1, source2);

console.log(target) //

淺拷貝

object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,如果源物件某個屬性的值是物件,那麼目標物件拷貝得到的是這個物件的引用。

const obj1 = };

const obj2 = object.assign({}, obj1);

obj1.a.b = 2;

obj2.a.b // 2

上面**中,源物件obj1a屬性的值是乙個物件,object.assign拷貝得到的是這個物件的引用。這個物件的任何變化,都會反映到目標物件上面。

為屬性指定預設值

const defaults = ;

function processcontent(options) , defaults, options);

console.log(options);

// ...

}

面**中,defaults物件是預設值,options物件是使用者提供的引數。object.assign方法將defaultsoptions合併成乙個新物件,如果兩者有同名屬性,則option的屬性值會覆蓋defaults的屬性值。

注意,由於存在淺拷貝的問題,defaults物件和options物件的所有屬性的值,最好都是簡單型別,不要指向另乙個物件。否則,defaults物件的該屬性很可能不起作用。

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

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

es6 語法 (正則擴充套件)

es5中常見修飾符是g i es6中新增 y,u exec 方法用於檢索字串中的正規表示式的匹配。test a false console.log u u.test a true 加上u才能被識別 console.log u let s console.log u test s false cons...

es6基礎之物件的擴充套件

本文源自阮老師的es6入門教程,為了之後方便自己隨時檢視,將常用的es6部分整理了一下 傳送門解構賦值 物件的解構賦值用於從乙個物件取值,相當於將目標物件自身的所有可遍歷的 enumerable 但尚未被讀取的屬性,分配到指定的物件上面。所有的鍵和它們的值,都會拷貝到新物件上面 123 4let x...