您能否提出任何解決方法來實現使用閉包或其他技巧引用變量?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