我在javascript中有一个对象,它有一堆我需要的数据。我希望能够在不丢失引用的情况下创建包含第一个对象的数据子集的第二个对象。例如:
var test1 = {foo: 'foo', bar: 'bar'};
var test2 = {foo: test1.foo};
不幸的是,以这种方式创建test2会丢失引用,并且test2.foo绑定到值'foo‘,而不是值'foo’的引用。这意味着属性foo不会在两个对象之间保持同步。
test1.foo = 'new value';
test2.foo; // <= 'foo'
我已经尝试了一堆东西来让它工作,但没有运气。我不确定该语言是否支持这一点,但也许有人有一个聪明的方法来实现这一点。
发布于 2015-03-20 12:54:27
好的。对于这个问题,我有一个很好的解决方案。所有的功劳都归功于@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'
超级高手!
https://stackoverflow.com/questions/29138381
复制相似问题