首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有可能创建一个对象,它是另一个对象的子集,而不丢失javascript中的引用?

有没有可能创建一个对象,它是另一个对象的子集,而不丢失javascript中的引用?
EN

Stack Overflow用户
提问于 2015-03-19 14:24:24
回答 1查看 48关注 0票数 1

我在javascript中有一个对象,它有一堆我需要的数据。我希望能够在不丢失引用的情况下创建包含第一个对象的数据子集的第二个对象。例如:

代码语言:javascript
复制
var test1 = {foo: 'foo', bar: 'bar'};
var test2 = {foo: test1.foo};

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

代码语言:javascript
复制
test1.foo = 'new value';
test2.foo; // <= 'foo'

我已经尝试了一堆东西来让它工作,但没有运气。我不确定该语言是否支持这一点,但也许有人有一个聪明的方法来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2015-03-20 12:54:27

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

代码语言:javascript
复制
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将保持同步。

代码语言:javascript
复制
test1.foo = 'new value';
test2.foo; // <= 'new value'
test2.foo = 'new new value';
test1.foo; // <= 'new new value'

超级高手!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29138381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档