你可能寫過這樣的**:使用和所分配的變數名稱相同的名稱初始化物件。
let type = 'quartz';
let color = 'rose';
let carat = 21.29;
const gemstone = ;
console.log(gemstone);
看到重複的地方了嗎?type: type、color: color
和carat: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
上面**中,源物件obj1
的a
屬性的值是乙個物件,object.assign
拷貝得到的是這個物件的引用。這個物件的任何變化,都會反映到目標物件上面。
為屬性指定預設值
const defaults = ;
function processcontent(options) , defaults, options);
console.log(options);
// ...
}
面**中,defaults
物件是預設值,options
物件是使用者提供的引數。object.assign
方法將defaults
和options
合併成乙個新物件,如果兩者有同名屬性,則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...