JavaScript Object.assign() 方法將給定對象的所有可枚舉屬性複製到單個對象並返回它。
用法:
Object.assign(target, ...sources)
assign()
方法是靜態方法,使用Object
類名調用。
assign()參數
assign()
方法包含:
target
- 目標對象 - 將源屬性應用到的對象,修改後返回。sources
- 源對象 - 包含您要應用的屬性的對象。
assign() 的返回值
- 返回目標對象。
注意:如果目標對象中的屬性具有相同的鍵,則源對象中的屬性將覆蓋它們。
示例 1:使用 Object.assign() 克隆和合並對象
// cloning objects
const obj = {
name: "Alan Turing",
age: 120,
};
let newObject = {};
const copy = Object.assign(newObject, obj);
// modifies the target object
console.log(newObject);
// returns the modified object
console.log(copy);
// merging objects
const o1 = { a: 1, b: 2, c: 3 };
const o2 = { b: 12, c: 13 };
const o3 = { c: 23 };
// Earlier source keys are overwritten by later sources
const o4 = Object.assign({}, o1, o2, o3);
console.log(o4); // { a: 1, b: 12, c: 23 }
輸出
{ name: 'Alan Turing', age: 120 } { name: 'Alan Turing', age: 120 } { a: 1, b: 12, c: 23 }
請注意,如果源值是對對象的引用,則它隻複製引用值。
此外,後期來源的屬性會覆蓋較早的來源。
示例 2:使用 Object.assign()
const obj = Object.create(
{ a: 1 },
{
// a is on obj's prototype chain.
b: {
value: 2, // b is a non-enumerable property.
},
c: {
value: 3,
enumerable: true, // c is an own enumerable property.
},
}
);
let copy = Object.assign({}, obj);
console.log(copy); // { c: 3 }
copy = Object.assign(copy, "abc", 100, null);
console.log(copy); // { '0': 'a', '1': 'b', '2': 'c', c: 3 }
輸出
{ c: 3 } { '0': 'a', '1': 'b', '2': 'c', c: 3 }
如您所見,原型鏈上的屬性和不可枚舉的屬性是無法複製的。
此外,原語將被包裝到對象中,null 和 undefined 將被忽略。
由於隻有字符串具有可枚舉屬性,它們被複製到目標對象。
相關用法
- JavaScript Object.isPrototypeOf()用法及代碼示例
- JavaScript Object.isExtensible()用法及代碼示例
- JavaScript Object.getPrototypeOf()用法及代碼示例
- JavaScript Object.isFrozen()用法及代碼示例
- JavaScript Object.seal()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptors()用法及代碼示例
- JavaScript Object.setPrototypeOf()用法及代碼示例
- JavaScript Object.getOwnPropertySymbols()用法及代碼示例
- JavaScript Object.defineProperties()用法及代碼示例
- JavaScript Object.freeze()用法及代碼示例
- JavaScript Object.preventExtensions()用法及代碼示例
- JavaScript Object.is()用法及代碼示例
- JavaScript Object.fromEntries()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptor()用法及代碼示例
- JavaScript Object.getOwnPropertyNames()用法及代碼示例
- JavaScript Object.propertyIsEnumerable()用法及代碼示例
- JavaScript Object.defineProperty()用法及代碼示例
- JavaScript Object.keys()用法及代碼示例
- JavaScript Object.values()用法及代碼示例
- JavaScript Object.create()用法及代碼示例
注:本文由純淨天空篩選整理自 JavaScript Object.assign()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。