object.assign()方法是es6裡面物件的擴充套件。它的功能是將源物件的屬性或方法複製到目標物件上面。
一、使用
object.assign(),將源物件的所有可列舉屬性複製到目標物件。
方法裡面的第乙個引數為目標物件,後面的為源物件。如果兩種物件存在同名屬性,後面的會覆蓋掉前面的。如果不寫源物件,則只返回目標物件。
let ta=;let s1=;
object.assign(ta,s1);
二、注意點
(1)該方法是淺複製,也就是說,如果源物件的某個屬性的值是物件,那麼目標物件複製得到的是這個物件的引用。
也就像是乙個指標,指向該屬性值所在的位置,所以裡面的值變化,得到的也會變化。**如下:
var obj2=;let obj3=};
object.assign(obj2,obj3);
obj3.like.reading="納博科夫";
console.log(obj3.like.reading);
//納博科夫
console.log(obj2.like.reading);//
納博科夫
淺複製的麻煩在於同名屬性的覆蓋,如果有同名屬性,源物件的屬性值會替換掉目標物件的屬性值。但是我們通常希望原來的屬性加上源物件的屬性,即想要擴充套件,而不是替換掉,所以要注意。
(2)如果源物件為乙個陣列,會將index當做屬性名,存入目標物件中。
var obj2=;object.assign(obj2,[0,1,2]);
console.log(obj2)
//
三、assign的常見用途
(1)為物件新增屬性
(2)為物件新增方法
(3)轉殖物件
(4)合併物件
(5)為屬性指定預設值
注意,由於淺複製,如果存在同名屬性,目標物件和源物件只能是簡單型別。否則,源物件的同名屬性會徹底覆蓋目標物件的同名屬性,而不是擴充套件目標物件的屬性。
比如下面這段**,兩個物件存在同名屬性url,本意是想要只修改port,但因為淺複製,把host用空給覆蓋掉了,只剩下了重新賦值的port.
const defaulturl=,}function
processcontent(option)
object.assign(obj, defaulturl,option);
console.log('obj-->>', obj); //}}
var newurl=processcontent(});
9 物件的擴充套件
es6一共有5種方法可以遍歷物件的屬性。1 for.in for.in迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbol屬性 2 object.keys obj object.keys返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 3 object.getownp...
ES6 物件的新增方法
object.assign object.assign方法用於物件的合併,將源物件 source 的所有可列舉屬性,複製到目標物件 target const target const source1 const source2 object.assign target,source1,source2...
ES6物件的新增方法
es5 比較兩個值是否相等,只有兩個運算子 相等運算子 和嚴格相等運算子 它們都有缺點,前者會自動轉換資料型別,後者的nan不等於自身,以及 0等於 0。j ascript 缺乏一種運算,在所有環境中,只要兩個值是一樣的,它們就應該相等。es6 提出 same value equality 同值相等...