javascript - 传递后是否可以覆盖对象?

标签 javascript pass-by-reference

请参阅以下示例:

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/

相关文章:

javascript - 另一个 jQuery Quicksand 跳跃式过渡

javascript - Jasmine 和 AngularJS - 当函数用作依赖项时如何测试工厂函数

javascript - IE 9.0 中的卸载问题

javascript - 是否可以通过 _.includes 进行不区分大小写的搜索?

javascript - 在 Parse 中一次更新多个对象

c - c语言调用函数什么时候加 '&'什么时候不加?

c - 查找大于和小于数组中的数字

php - 在 isset() 和 empty() 函数中通过引用传递

go - 如何在Golang中通过引用传递具有值类型接口(interface)的 map slice

Java 递归 : pass by reference