我試圖在javascript中實現一個經典模塊模式,討論here和here。但我的私人方法不起作用。我有以下的測試代碼。模塊模式中的私有方法:TypeError:undefined不是函數
var jsStuff = (function() {
// Private
var sayStuffPrivate = function (stuff) {
console.log("I am a private method: " + stuff);
return true;
};
// Public
return {
sayStuff: function (stuff) {
console.log("I am a public method: " + stuff);
this.sayStuffPrivate(stuff);
return true;
}
}
}());
當我嘗試運行此,我得到如下:
> jsStuff.sayStuff('blah');
test.js:16 I am a public method: blah
test.js:17 Uncaught TypeError: undefined is not a function
缺少什麼我在這裏?
這不是一種方法,因爲這意味着它不再是私人的。這只是一個本地功能,應該這樣訪問;而不是通過'this.'像你的對象的公共屬性。 – Bergi 2014-12-11 06:06:54
請注意,函數內* this *的值完全取決於您如何調用函數(或通過使用* bind *),而非詞彙(或函數的創建方式)。 – RobG 2014-12-11 06:17:08