你能提供任何解决方案来使用闭包或其他技巧实现对变量的引用吗?
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());
Provider.prototype.getXRef = function () { var that = this; return function() { return that.x; }; };
这样就可以避免使用字符串了。 - brianpeiris