请参阅以下示例:
var foo = { bar : 0 };
function modify(obj)
{
obj = {};
}
modify(foo);
console.log(foo);
我在全局范围内的第一个对象保持不变。因为该函数没有替换对象,而是替换了引用的副本。
所以我的问题很简单。有谁知道解决方法,或者当前正在开发中是否有 ECMAScript 功能,或者是否尝试过使这成为可能?
谢谢。
最佳答案
您无法更改调用您的变量的绑定(bind)。但由于您收到对同一对象的引用,因此您可以修改该对象本身。因此您可以删除所有属性:
function modify(obj) {
Object.keys(obj).forEach(function(k) {
delete obj[k];
});
}
var foo = { a: 3 };
console.log(foo);
modify(foo);
console.log(foo);
关于javascript - 传递后是否可以覆盖对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37629172/