gpt4 book ai didi

javascript - 是否可以创建一个作为另一个对象的子集的对象,而不会丢失 JavaScript 中的引用?

转载 作者:行者123 更新时间:2023-11-28 00:29:34 26 4
gpt4 key购买 nike

我有一个 JavaScript 对象,其中包含我需要的一堆数据。我希望能够创建第二个对象,其中包含第一个对象的数据子集,而不会丢失引用。例如:

var test1 = {foo: 'foo', bar: 'bar'};
var test2 = {foo: test1.foo};

不幸的是,以这种方式创建 test2 会丢失引用,并且 test2.foo 绑定(bind)到值“foo”而不是值“foo”的引用。这意味着属性 foo 在两个对象之间不保持同步。

test1.foo = 'new value';
test2.foo; // <= 'foo'

我尝试了很多方法来使其正常工作,但没有成功。我不确定该语言是否支持这一点,但也许有人有一个聪明的方法来实现这一点。

最佳答案

好的。对于这个问题我有一个非常好的解决方案。所有功劳都归功于@Alexei Levenkov,他提出了使用 getter 和 setter 的建议。

var test1 = {foo: 'foo', bar: 'bar'};
var test2 = {get foo(){return test1.foo;}, set foo(x){test1.foo = x;}};

通过使用 getter 和 setter,test1.foo 和 test2.foo 将保持同步。

test1.foo = 'new value';
test2.foo; // <= 'new value'
test2.foo = 'new new value';
test1.foo; // <= 'new new value'

super 骗子!!!

关于javascript - 是否可以创建一个作为另一个对象的子集的对象,而不会丢失 JavaScript 中的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29138381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com