2012-12-20 35 views
3

当我加载一个页面时,我打电话给“addEventListener”来初始化“deviceReady”,在那个addEventListener里我想调用一个类内的函数。例子。如何在document.addEventListener()中调用类函数

实施例类

var HomePageModel = function(){ 

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

我想调用上述initModule功能的addEventListener

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

是否有可能在类的外部的eventlistener内调用类函数???

回答

5

你需要一个实例第一:

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); 
+0

这会失去这个。 – SLaks

+1

@SLaks在功能里面,是的。但我不确定是否需要。 – bfavaretto