如何使 2 个 Javascript 变量始终彼此相等?
我正在尝试在脚本中实现 node.js module.exports
和 exports
规则。这两个变量在任何时候都应该彼此相等。即使其中一个发生变化,另一个也应该发生变化。
我尝试使用 setter 执行此操作,但 o.foo 和 o.bar 最终都未定义 =/
var foo = { hello: 'world' };
var o = {
foo: foo,
bar: foo
};
var inuse = false;
var setter = function(val) {
if (inuse) return;
inuse = true;
o.foo = val;
o.bar = val;
inuse = false;
};
o.__defineSetter__('foo', setter);
o.__defineSetter__('bar', setter);
o.foo = { hey: 'there' };
console.log(o.foo);
console.log(o.bar);
I'm trying to implement the node.js module.exports
and exports
rule in a script. These 2 variables should be equal to each other at all times. Even when one changes the other one should change too.
I tried doing this with setters, but both o.foo and o.bar end up undefined =/
var foo = { hello: 'world' };
var o = {
foo: foo,
bar: foo
};
var inuse = false;
var setter = function(val) {
if (inuse) return;
inuse = true;
o.foo = val;
o.bar = val;
inuse = false;
};
o.__defineSetter__('foo', setter);
o.__defineSetter__('bar', setter);
o.foo = { hey: 'there' };
console.log(o.foo);
console.log(o.bar);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
还创建 getter,并分配给不同的属性名称。
演示: http://jsfiddle.net/jqExh/
或者使用变量而不是属性:
演示: http://jsfiddle.net/jqExh/1/
这是唯一的方法获取和设置它们的方法是通过访问器。
Create getters as well, and assign to different property names.
DEMO: http://jsfiddle.net/jqExh/
Or use variables instead of properties:
DEMO: http://jsfiddle.net/jqExh/1/
This way the only way to get and set them is via the accessors.