如何在 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/