请参阅以下示例:
var foo = { bar : 0 };
function modify(obj)
{
obj = {};
}
modify(foo);
console.log(foo);

我在全球范围内的第一个对象保持不变。因为该函数没有替换对象而是替换引用的副本。
所以我的问题很简单。有没有人知道一种解决方法,或者当前开发中是否有ECMAScript功能,或者有没有尝试使其成为可能?
感谢。
答案 0 :(得分:1)
您无法更改调用的变量的绑定。但是,由于您收到对同一对象的引用,因此您可以修改对象本身。所以你可以删除所有属性:
function modify(obj) {
Object.keys(obj).forEach(function(k) {
delete obj[k];
});
}
var foo = { a: 3 };
console.log(foo);
modify(foo);
console.log(foo);