【发布时间】:2011-12-30 16:04:28
【问题描述】:
我正在尝试实现显示模块模式。我需要为其中一个元素分配一个事件处理程序,这个事件处理程序是我在原型中定义的一个函数,但我得到 this.trigger is not a function 错误。
这是我所做的:
//constructor
var MyClass = function (settings) {
this.someElement=$(settings.elementID);
}
//prototype
MyClass.prototype = function() {
var init = function() {
this.someElement.change(this.handler);
},
handler = function() {
this.someElement.hide();
};
return {
init : init,
handler : handler
};
}();
我是这样称呼它的:
var myClass = new MyClass();
myClass.init();
【问题讨论】:
-
我看不出
this.trigger来自哪里。 -
我正在尝试对处理程序中的 this.someElement 做一些事情。这是关闭的问题吗?
-
我看到的一个问题是在 MyClass.prototype 中,处理程序的范围不正确。没有“var”,它会被全局声明,你可能不想要。可能不是问题,但您仍然应该解决它。那么您是否尝试从“新”实例调用处理程序?您还应该发布调用此方法的代码。
-
@thescientist 它有一个来自先前声明的 var 子句。注意','
-
@Ufuk,啊,我明白了。感谢您指出这一点。
标签: javascript design-patterns revealing-module-pattern