Object.assign() 怎么用
时间: 2023-05-13 13:07:07 浏览: 105
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。它的语法如下:
Object.assign(target, ...sources)
其中,target 是目标对象,sources 是一个或多个源对象。
例如,我们有一个目标对象 target 和两个源对象 source1 和 source2:
const target = { a: 1, b: 2 };
const source1 = { b: 3, c: 4 };
const source2 = { d: 5 };
我们可以使用 Object.assign() 方法将 source1 和 source2 的属性值复制到 target 中:
Object.assign(target, source1, source2);
此时,target 的值为:
{ a: 1, b: 3, c: 4, d: 5 }
注意,如果目标对象中已经存在某个属性,那么源对象中的同名属性会覆盖目标对象中的属性。
相关问题
object.assign 跟object.extend区别
object.assign 和 object.extend 都是用来合并多个对象的方法,但二者有着不同的实现和应用场景。
object.assign 方法是 ES6 中新增的,它的作用是将源对象(source)的所有可枚举属性复制到目标对象(target)中。如果目标对象中已存在同名属性,则覆盖其值,如果源对象为 null 或 undefined,则会抛出 TypeError 异常。
示例代码如下:
```
const obj1 = {a: 1, b: 2};
const obj2 = {c: 3};
const obj3 = {a: 4};
const result = Object.assign({}, obj1, obj2, obj3);
console.log(result);
//{a:4, b:2, c:3}
```
此处将 obj1、obj2、obj3 对象合并成了一个新的对象,并返回该新对象。
相比之下,object.extend 是一种常见的扩展对象的方式,通常用于继承和混入。它的实现可依靠 jQuery 等 JS 库,并使用华丽的链式语法。object.extend 方法会将目标对象和源对象的属性合并,且源对象的属性优先。
示例代码如下:
```
const obj1 = {a: 1, b: 2};
const obj2 = {c: 3};
const obj3 = {a: 4};
const result = $.extend({}, obj1, obj2, obj3);
console.log(result);
//{a:4, b:2, c:3}
```
此处同样将 obj1、obj2、obj3 对象合并成了一个新的对象,并返回该新对象。
综上所述,object.assign 和 object.extend 都可以用于合并多个对象,但 object.assign 更适合于一次性合并多个对象,而 object.extend 则更适合于扩展单个对象。
object.assign
`Object.assign()` 是一个 JavaScript 方法,用于将一个或多个源对象的所有可枚举属性复制到目标对象中。它的语法如下:
```
Object.assign(target, ...sources)
```
其中,`target` 是目标对象,`sources` 是一个或多个源对象。这个方法会返回目标对象。
`Object.assign()` 方法会将所有源对象的可枚举属性复制到目标对象中。如果一个属性在多个源对象中出现,后面的源对象会覆盖前面的源对象中的同名属性。如果目标对象中已经存在一个同名属性,则会覆盖该属性的值。
需要注意的是,`Object.assign()` 方法只会复制对象的可枚举属性,而且不会复制原型链上的属性。此外,它也不会复制对象的 getter 和 setter 方法。如果源对象中存在一个 getter 方法,那么在目标对象中只会复制该 getter 方法的返回值。
阅读全文