您能否提出任何解决方法来实现使用闭包或其他技巧引用变量?javascript如何创建参考
createReference = function() {
// TODO: how to implement?
};
var x = 5;
var refX = createReference(x); // could be any parameters needed to implement the logic
x = 6;
alert(refX()); // should alert 6
什么有关传递上下文第一个参数,并传递变量名称(如串)和后以某种方式评估预定义的上下文参考。这是可行的吗?
这里有一个更完整的场景:
createReference = function(context, prop) {
return function() {
return context[prop];
};
};
Provider = function() {
};
Provider.prototype.x = 5;
Provider.prototype.getXRef = function() {
return createReference(this, 'x');
};
Provider.prototype.incrementX = function() {
this.x = this.x + 1;
};
var provider = new Provider();
var refX = provider.getXRef();
provider.incrementX();
alert(refX());
将来,请不要将您的问题作为代码中的嵌入式注释提出。这使得很难看到这个问题,而且让人们认为这不是一个问题。 – Oded 2011-04-28 19:28:42
我很高兴我回答了你的问题,但是,在你更新的场景中,为什么不直接使用:'Provider.prototype.getXRef = function(){var that = this;返回函数(){return that.x; }; };'这样你可以避免使用字符串? – brianpeiris 2011-04-28 20:23:08
createReference是通用的方法。那么在不同的情况下,我只会使用这种通用的方式。关于你的评论:它冷没有Provider.prototype.getXRef方法,但在其他一些方法可能我想传递引用一些其他对象作为回调参数等...它会更可读写createReference(这, 'x')then function(){var that = this;返回函数(){return that.x; }; };在日常使用中。 – 2011-04-28 20:37:36