Object.assign()
1.Object.assign方法用于對象的合并,將源對象的所有可枚舉屬性,復制到目標對象。(淺拷貝)
const target = { a: 1 }; //目標對象
const source1 = { b: 2 }; //源對象
const source2 = { c: 3 }; //源對象
//第一個參數是目標對象,后面的可以設置多個源對象
Object.assign(target, source1, source2);
console.log(target) // {a:1, b:2, c:3}
2.如果對象之間有同名屬性,復制的時候后面的屬性會覆蓋前面的屬性。
3.如果只有一個參數,則直接返回此參數。
const obj = {a: 1};
Object.assign(obj) === obj // true
4.如果該參數不是對象,則會先轉成對象,然后返回。
5.由于undefined和null無法轉成對象,所以如果它們作為第一個參數目標對象,就會報錯。
如果作為源對象參數,源對象中無法轉成對象的,就會跳過,不會報錯。
6.只拷貝源對象的自身屬性(不拷貝繼承屬性),也不拷貝不可枚舉的屬性。
Object.keys,Object.values,Object.entries()
1.Object.keys()返回對象所有可遍歷的屬性名(不包含繼承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
2.Object.values() 返回對象所有可遍歷的屬性值(不包含繼承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.values(obj)) {
console.log(key); // '1', '2', '3'
}
3.Object.entries() 返回對象所有可遍歷的鍵值對數組(不包含繼承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.entries(obj)) {
console.log(key); // ["a", 1], ["b", 2],["c", 3]
}