ES6 Object.assign() 方法详解:用法、浅拷贝与常见场景
本文详解 ES6 中 Object.assign() 方法的用法。该方法用于将源对象的值复制到目标对象,实现属性添加、方法定义、对象克隆及多对象合并。需注意其浅拷贝特性,即嵌套对象仅复制引用。通过实例代码展示如何结合 Object.getPrototypeOf 保持继承链,以及利用默认值配置对象。
核心方法为 Object.assign()。其主要功能是将源对象(source)的可枚举属性值复制到目标对象(target)。若目标对象与源对象存在同名属性,源对象的值将覆盖目标对象的值;若目标对象拥有源对象没有的属性,则保留不变;若源对象拥有目标对象没有的属性,则会被添加到目标对象中。具体调用方式如下:
Object.assign() 执行的是浅拷贝操作,而非深拷贝。这意味着,如果源对象中某个属性的值本身是一个对象,那么目标对象中对应属性将保存对该源对象内部对象的引用,而非该对象的副本。
var object1 = { a: { b: 1 } };
ar object2 = Object.assign({}, object1);
object1.a.b = 2;
console.log(object2.a.b);
2. 应用场景
2.1 为对象添加属性
2.2 为对象添加方法
2.3 克隆对象
function copyFnc(origin) {
return Object.assign({}, origin)}
var sur = { a: 1, b: 2 };
console.log(copyFnc(sur));
上述代码示例将原始对象的所有属性复制到一个空对象中,从而实现了原始对象的克隆效果。
然而,这种简单的克隆方式仅能复制原始对象自身的属性值,无法保留其继承的属性。若需保持完整的继承链,可采用以下代码实现:
function clone(origin) {
let originProto = Object.getPrototypeOf(origin);
return Object.assign(Object.create(originProto), origin);
}
在 JavaScript 中,子类可通过 Object.getPrototypeOf() 获取对象的原型,进而调用父类方法。
2.4 合并多个对象
// 将多个对象合并到指定的目标对象中
const merge = (target, ...sources) => Object.assign(target, ...sources);
// 将多个对象合并生成一个新的对象
const merge = (...sources) => Object.assign({}, ...sources);
2.5 为属性指定默认值
const DEFAULTS = {
logLevel: 0,
outputFormat: 'html'};
function processContent(options) {let options = Object.assign({}, DEFAULTS, options);
}
至此,关于 ES6 Object.assign() 的用法及用途的介绍已完成。如需了解更多相关内容,可搜索本站往期文章或继续浏览后续文章,感谢大家的支持!
JS合并多个数组的三种方法:concat、spread与flat
2026-11-05 17:39:45
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
