如何调用document.addEventListener()中的类函数

时间:2012-12-20 14:30:42

标签: javascript javascript-events event-handling prototype

当我加载页面时,我调用“addEventListener”来初始化“deviceReady”,在addEventListener中我想调用类中的函数。请参阅以下示例。

示例类

var HomePageModel = function(){

    this.initModule = function(){
    //doing some process;
    };
};

我想在 addEventListener 中调用上面的 initModule 函数。

document.addEventListener("deviceready", HomePageModel.initModule, false);

是否可以在类??? ???

之外的eventlistener中调用类函数

1 个答案:

答案 0 :(得分:6)

您首先需要一个实例:

document.addEventListener("deviceready", new HomePageModel().initModule, false);

请注意,如果您的initModule方法使用this,则无效,因为this将设置为触发事件的元素。为避免这种情况,您可以创建一个绑定到固定值this的新函数:

var model = new HomePageModel();
var boundFn = model.initModule.bind(model);
document.addEventListener("deviceready", boundFn, false);

最后,你总是可以使用包装器函数作为事件处理程序,并从那里调用你的模块初始化器(不知道为什么你没有考虑过):

document.addEventListener("deviceready", function(){
    new HomePageModel().initModule();
}, false);