ES6 Object.assign() 方法详解:用法、浅拷贝与常见场景

作者:木棉

时间:2026-10-24

浏览:153

本文详解 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() 的用法及用途的介绍已完成。如需了解更多相关内容,可搜索本站往期文章或继续浏览后续文章,感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章