物業對於類引擎, 「開始」 和 「停止」 是兩個public methods
其內部稱之爲 「ignitionOn」 和 「ignitionOff」。 後「開始」被稱爲private method
設置在engine instance
變量「ignitionIndicator
」到「true
」和「stop
」設置爲「false
」。的JavaScript:調用私有方法的類對象
但是,這沒有發生。由於「點火指示」值總是「未定義」,所以出現了問題。我必須牢記以下幾點。 (i)方法的可見性應保持原樣。 (ii)我不能直接從public methods
設置變量。變量應該只能從private method
內設置。
function Engine() {
function EngineConstructor() { };
// publicly accessible methods
EngineConstructor.prototype.start = function() {
ignitionOn();
};
EngineConstructor.prototype.stop = function() {
ignitionOff();
};
// private methods
function ignitionOn() {
// does other things and sets this to true
this.ignitionIndicator = true;
};
function ignitionOff() {
// does other things and sets this to false
this.ignitionIndicator = false;
};
return new EngineConstructor();
};
var e = new Engine();
e.start();
e.ignitionIndicator // undefined, should have been true
e.stop();
e.ignitionIndicator // undefined, should have been false
謝謝@Crowder +1對於很好的解釋! – Tyshawn