我找不到在不丢失 javascript 中的链接指针的情况下替换对象的方法。
在我的场景中,我创建了一些对象
var a = new someObject();
selectedbyUser.push(a);
objectWithissues.push(a);
objectBeingreviewed.push(a);
...
现在某个时候我想用另一个对象替换这个对象(比如 C++ 中的指针)
我可以用另一个对象的参数重写整个对象,但我更愿意替换它:
a = new someObject();
现在这只是从当前对象中分离 a 以使其指向新对象,我想要的是用新对象替换该对象,以便数组中的引用指向这个新对象..是这可能吗?
最佳答案
有几种方法可以满足您的要求,但大多数方法都需要更改函数的签名。
一种方法是为该对象创建一个 getter 函数,并传递该函数而不是对象本身。
var a = 5;
function getA() {
return a;
}
function test(getObj) {
console.log(getObj());
setTimeout(function() {
console.log(getObj());
}, 250);
}
test(getA);
a = 2;
另一种方法是用另一个对象包装对象,使所有函数都保留对父对象的引用,并且无论何时更改引用,都不会留下对该对象的任何其他引用。
var wrapper = {
a: 5
};
function test(wrap) {
console.log(wrap.a);
setTimeout(function() {
console.log(wrap.a);
}, 250);
}
test(wrapper);
wrapper.a = 2;
最后,如果您不需要对原始对象的引用,您可以只替换所有字段,而不是创建一个新对象(假设没有私有(private)字段)。
关于javascript - 替换对象并保留指向该对象的现有指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54686355/