object.assign 跟object.extend区别
时间: 2023-05-09 08:01:04 浏览: 118
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 则更适合于扩展单个对象。