javascript - 如何在 Javascript 中仅使用其引用来更改对象

标签 javascript

如何在 Javascript 中仅使用其引用来更改对象?

var $obj = { original: true }

var $ref = $obj

// Is it possible here to set $obj to {} with only using $ref?
$ref = {} // This doesn't work

console.log($obj)
// => { original: true }

使用示例:

var $objs = { 
  a: {
    wantsToBeAnEmptyObject: true
  },
  b: {
    wantsToBeAnEmptyObject: true
  }
}

_.forOwn($objs, (val) => {
  val = {}
})

谁能帮我解决这个问题吗?

最佳答案

Is it possible here to set $obj to {} with only using $ref?

不可能使用 $ref 更改哪个对象 $obj 引用的对象,不。您可以更改它们引用的对象的状态(添加、更新或删除属性),但无法更改哪个对象 $obj 指的是。 (请注意,在大多数 JavaScript 引擎上,从对象中删除属性会对其进行去优化,从而使后续的属性访问速度变慢。这通常并不重要,因为即使“较慢”的现代引擎仍然非常非常快。但是...... )

通常的解决方案是让 $obj 引用一个对象,该对象的属性引用您希望能够替换的对象:

var $obj = {obj: { original: true } };
// --------^^^^^--------------------^
var $ref = $obj;
$ref.obj = { replaced: true };
//  ^^^^
console.log($obj.obj.replaced) // true

关于javascript - 如何在 Javascript 中仅使用其引用来更改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027008/

相关文章:

javascript - 在 javascript 中切换点击事件的最佳方法是什么?

javascript - 使用 ng-repeat angularjs 在表中应用 rowspan

javascript - 何时在 javascript 中使用 'return'

javascript - 类型错误 : Cannot read Property 'extend' of undefined , Yeoman 生成器

javascript - 如何为 NodeJS 中的自定义错误类获取正确的回溯?

javascript - 使用PHP将JS文件包含到php文件中出错

javascript - 类型 'inputItem' 上不存在属性 'EventTarget' - Semantic-Ui、React 和 Typescript

javascript - 如何将列插入表中?

javascript - onfocus vs onfocusin & onblur vs onfocusout

javascript - 类型错误 : Cannot read property '$on' of undefined in q-ajax-bar