javascript - 替换对象并保留指向该对象的现有指针

标签 javascript typescript reference

我找不到在不丢失 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/

相关文章:

javascript - React-Redux 程序返回 "TypeError: Cannot read property ' map' of undefined"

javascript - 如何通过类名查找 <DIV> 并删除 javascript?

javascript - typescript 可选链接结合三元运算符解析错误

javascript - 这段 JavaScript 代码有什么问题?

angular - 在模型类 Angular 中注入(inject)服务

typescript - Ionic 2 - 如何根据先前的下拉选择显示第二个下拉数据

java - 使用 JPA 引用 "to any"

asp.net-mvc-3 - Asp.net MVC3 从 Razor View 访问内部类

c - 通过引用函数传递结构、操作它们并从 'main' 访问它们的值

javascript - 为什么在将值从 js 变量赋值给 php 变量后无法进行算术运算?