对象.assign()方法用于将一个或多个源对象的值和属性复制到目标对象。它调用 getter 和 setter,因为它在源上使用 [[Get]],在目标上使用 [[Set]]。
用法:
Object.assign(target, ...sources);
参数:
- target:它是值和属性必须复制到的目标对象。
- sources:它是必须从中复制值和属性的源对象。
返回值:
对象.assign()返回目标对象。
示例1:在此示例中,对象 “obj1” 的属性即 { a: 10 } 被复制到目标对象 “new_obj”。
Javascript
// creating an object constructor
// and assigning values to it
const obj1 = { a: 1 };
// creating a target object and copying values and
// properties to it using object.assign() method
// Here, obj1 is the source object
const new_obj = Object.assign({}, obj1);
// Displaying the target object
console.log(new_obj);
输出:
Object { a: 1 }
示例 2:在此示例中,三个源对象“obj1、obj2、obj3”的属性被复制到目标对象“new_obj”。先前对象中存在的任何预先存在的键值对的值将为over-written。例如,值为 10 的 obj1.b 现在将被值为 20 的 obj2.b 覆盖
Javascript
// creating 3 object constructors and assigning values to it
let obj1 = { a: 10 };
let obj2 = { b: 20 };
let obj3 = { c: 30 };
// Creating a target object and copying values
// and properties to it using object.assign() method
let new_obj = Object.assign({}, obj1, obj2, obj3);
// Displaying the target object
console.log(new_obj);
输出:
Object { a: 10, b: 20, c: 30 }
示例 3:在此示例中,三个源对象“obj1、obj2、obj3”的属性被复制到目标对象“new_obj”,并且目标对象获取覆盖的值。
Javascript
// Creating 3 object constructors and assigning values to it
let obj1 = { a: 10, b: 10, c: 10 };
let obj2 = { b: 20, c: 20 };
let obj3 = { c: 30 };
// Creating a target object and copying values and
// properties to it using object.assign() method
let new_obj = Object.assign({}, obj1, obj2, obj3);
// Displaying the target object
console.log(new_obj);
输出:
Object { a: 10, b: 20, c: 30 }
解释:
在上面的代码中,属性被稍后以相同参数顺序具有相同属性的其他对象覆盖。
应用:
- 对象.assign()用于克隆对象,合并具有相同属性的对象。
错误和异常:
- 如果该属性不可写,则会引发TypeError。
- 仅当在引发错误之前添加属性时,才能更改目标对象。
- 对象.assign()不会引发 null 或未定义的源值
我们有 JavaScript 对象方法的完整列表,要检查这些方法,请浏览此JavaScript 对象完整参考文章。
支持的浏览器:
- 谷歌浏览器 6.0 及以上版本
- Internet Explorer 9.0 及以上版本
- Mozilla 4.0 及以上版本
- Opera 11.1 及以上版本
- Safari 5.0 及以上版本
相关用法
- JavaScript Object toLocaleString()用法及代码示例
- JavaScript Object toString()用法及代码示例
- JavaScript Object valueOf()用法及代码示例
- JavaScript Object hasOwnProperty()用法及代码示例
- JavaScript Object getOwnPropertyDescriptor()用法及代码示例
- JavaScript Object getOwnPropertyDescriptors()用法及代码示例
- JavaScript Object getOwnPropertyNames()用法及代码示例
- JavaScript Object getOwnPropertySymbols()用法及代码示例
- JavaScript Object __defineGetter__()用法及代码示例
- JavaScript Object keys()用法及代码示例
- JavaScript Object propertyIsEnumerable()用法及代码示例
- JavaScript Object getPrototypeOf()用法及代码示例
- JavaScript Object freeze()用法及代码示例
- JavaScript Object is()用法及代码示例
- JavaScript Object values()用法及代码示例
- JavaScript Object isPrototypeOf()用法及代码示例
- JavaScript Object hasOwn()用法及代码示例
- JavaScript Object isFrozen()用法及代码示例
- JavaScript Object entries()用法及代码示例
- JavaScript Object isSealed()用法及代码示例
- JavaScript Object create()用法及代码示例
- JavaScript Object seal()用法及代码示例
- JavaScript Object.keys()用法及代码示例
- JavaScript Object.values()用法及代码示例
- JavaScript Object.entries()用法及代码示例
注:本文由纯净天空筛选整理自Shubrodeep Banerjee大神的英文原创作品 JavaScript Object assign() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。