在 JavaScript 中,对象是通过引用进行值传递的。这意味着当将一个对象作为参数传递给函数时,实际上传递的是该对象的引用,而不是对象的副本。
基础概念:
优势:
类型:
应用场景:
常见问题及解决方法:
示例代码:
// 引用传递示例
function modifyObject(obj) {
obj.name = 'New Name';
}
let myObject = { name: 'Original Name' };
modifyObject(myObject);
console.log(myObject.name); // 输出 'New Name'
// 浅拷贝示例
let shallowCopy = { ...myObject };
shallowCopy.name = 'Another Name';
console.log(myObject.name); // 仍输出 'New Name'
// 深拷贝示例(使用 JSON 方法)
let deepCopy = JSON.parse(JSON.stringify(myObject));
deepCopy.name = 'Yet Another Name';
console.log(myObject.name); // 还是输出 'New Name'
需要注意的是,使用 JSON 方法进行深拷贝有一些限制,例如无法复制函数、RegExp 对象等。对于更复杂的深拷贝需求,可以使用专门的库如 lodash 的 _.cloneDeep
方法。
领取专属 10元无门槛券
手把手带您无忧上云