ES6 的 Object.assign() 使用实例详解
作者:还是大剑师兰特
Object.assign() 是 ECMAScript 6 引入的方法,用于将源对象(source)的所有可枚举属性复制到目标对象(target),这篇文章主要介绍了ES6 的 Object.assign() 使用详解,需要的朋友可以参考下
一、Object.assign()作用
Object.assign()
是 ECMAScript 6 引入的方法,用于将源对象(source)的所有可枚举属性复制到目标对象(target)。它会返回目标对象,同时修改目标对象。
二、基本语法
Object.assign(target, ...sources)
target
:必须,目标对象,将接收来源对象的属性。sources
:零个或多个源对象,它们的可枚举属性将被复制到目标对象。
三、示例代码
// 创建源对象 let source1 = { a: 1, b: 2 }; let source2 = { c: 3, d: 4 }; // 创建目标对象 let target = { e: 5 }; // 使用Object.assign复制属性 Object.assign(target, source1, source2); console.log(target); // 输出: { a: 1, b: 2, c: 3, d: 4, e: 5 }
四、应用场景
合并多个对象:当你希望将多个对象的属性合并到一个新对象或现有对象中时。
let objA = { a: 1, b: 2 }; let objB = { b: 3, c: 4 }; let mergedObj = Object.assign({}, objA, objB); console.log(mergedObj); // 输出: { a: 1, b: 3, c: 4 }
扩展原型链:用于向类的原型添加方法或属性。
class MyClass {} Object.assign(MyClass.prototype, { method1() { /* ... */ }, method2() { /* ... */ }, }); new MyClass().method1(); // 此时MyClass实例可以调用method1()
浅拷贝:Object.assign可以用来实现浅拷贝,但它只复制对象的第一层属性,如果源对象的属性值是对象,只会复制对象的引用,不会深拷贝。
let obj = { a: { b: 1 } }; let copy = Object.assign({}, obj); obj.a.b = 2; console.log(copy.a.b); // 输出: 2,因为a属性指向同一个引用
五、注意事项
- 如果有相同属性名,后面的源对象的属性会覆盖前面源对象的属性。
- Object.assign不会遍历源对象的原型链,只会复制自身可枚举属性。
- 对于null或undefined作为源对象的情况,会被忽略。
- 如果目标对象上有不可写属性,且源对象上也有同名属性,该属性无法被赋值。
到此这篇关于ES6 的 Object.assign() 使用实例详解的文章就介绍到这了,更多相关ES6 Object.assign() 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!