我正在使用模块显示原型模式(https://weblogs.asp.net/dwahlin/techniques-strategies-and-patterns-for-structuring-javascript-code-revealing-prototype-pattern),并且在我的原型函数中访问我的这个变量时遇到了麻烦。我有这段代码:
myapp.ConfirmationWindow = function (temptype) {
this._type = temptype;
};
myapp.ConfirmationWindow.prototype = function () {
this._showConfirmationWindow = function (message) {
var a = this._type; //valid
return _showWindow("hello");
}
this._showWindow = function (message) {
var a= this._type; //invalid
}
return {
showConfirmationWindow: _showConfirmationWindow
};
}();
我可以在_showConfirmationWindow()中访问this._type,但是无法访问_showWindow中的this._type。不同的是原型将_showConfirmationWindow()设置为public,将_showWindow设置为private,但为什么_showWindow不能访问this._type。为什么会这样。
我找到的一个解决方案是将其作为_showWindow
中的额外参数传递答案 0 :(得分:1)
_showWindow
对您的实例没有this
引用,因为它不属于ConfirmationWindow prototype
,因为只返回showConfirmationWindow
,它永远不会被分配给原型。您可以使用call
来调用您的私有函数,如:
_showWindow.call(this, "hello")
或者向_showWindow
添加第二个参数,并在调用时传递this
引用:
_showWindow(message, self)
但我更喜欢第一个。