考慮此errorful代碼:在一個javascript對象訪問的內變量
x = {
y : "why",
z : function() {
return y + " zed";
}
}
函數z不起作用: 「的ReferenceError:Y沒有定義」。
有沒有辦法從函數z中訪問y而沒有完全指定它爲x.y?
我當然可以改寫這個作爲
x = function() {
var self = this;
this.y = "why";
this.z = function() {
return self.y + " zed";
};
return this;
}();
...但天哪。
這並不是絕對可靠的 - 考慮變種Z = x.z; Z(); //「undefined zed」 – meouw
@meouw的確,除此之外,我沒有看到OP的「重寫」變體以外的其他選項。 – VisioN
@meouw偉大的一點。我也錯過了。我認爲你可以用一個閉包來使事情複雜化,以確保y總是在:http://jsfiddle.net/YpX3B/ – jatrim