Object.assign 报错:常见原因及解决方法
Object.assign 简介
Object.assign() 是 JavaScript 中一个用于对象赋值的方法,可以将所有可枚举属性的值从一个或多个源对象复制到目标对象,这个方法经常用于对象属性的合并。
Object.assign 报错原因
- 源对象是基本数据类型:当源对象是基本数据类型时,Object.assign() 无法复制属性到目标对象,因此会报错。
- 源对象是函数或Symbol:函数或Symbol类型的对象无法作为源对象,否则会报错。
- 源对象是循环引用:如果源对象存在循环引用,Object.assign() 会报错。
- 目标对象属性不可写:如果目标对象的某个属性不可写,Object.assign() 无法修改该属性,会报错。
解决方法
- 检查源对象类型:确保源对象不是基本数据类型、函数或Symbol。
- 处理循环引用:使用递归方法处理循环引用,或者使用其他方法避免循环引用。
- 检查目标对象属性:确保目标对象的属性可写。
示例代码
以下是一个示例代码,演示如何使用 Object.assign() 合并对象:

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const result = Object.assign({}, obj1, obj2);
console.log(result); // { a: 1, b: 3, c: 4 } FAQs
Q1:Object.assign() 是否会改变原对象?
A1:Object.assign() 不会改变原对象,它会返回一个新的对象,包含合并后的属性。

Q2:如何判断 Object.assign() 是否成功执行?
A2:可以通过判断返回值是否与目标对象相等来判断 Object.assign() 是否成功执行,如果相等,说明合并成功;如果不相等,说明合并失败。


