如何为javascript类创建自定义事件?
示例代码
function somefunction(url){
this.h_world = function(){/*some random code to do*/ };
}
var hw = new somefunction();
现在,举一个非常简单的例子,当hw.h_world
完成执行并用它返回一些数据时,如何为此创建一个自定义事件处理程序?
例如
var hw = new somefunction();
hw.h_world();
hw.finished_h_world = function(somedata){
alert(somedata);
}
答案 0 :(得分:5)
您需要的是回调函数:
function somefunction(url){
this.h_world = function(callback){
var somedata = 'some data';
callback(somedata);
};
}
然后:
var hw = new somefunction();
hw.h_world(function(somedata){
alert(somedata); // Will alert 'some data';
});
这是一个jsfiddle:http://jsfiddle.net/remibreton/xzeEd/
答案 1 :(得分:2)
你可以将回调函数传递给h_world函数并在完成时执行它
function somefunction(url){
this.h_world = function(cb){
//do some operation
if (cb && typeof cb === 'function') {
cb();
//cb.call(this, args1, arg2...); //execute callback in scope of current object
}
};
}
或者您可以像这样向您的班级添加一个功能
function somefunction(url){
this.h_world = function(){
//do operation
this.h_world_finish(parameters);
};
this.h_world_finish = function () {};
}
var obj = new someFunction(url);
obj.h_world_finish = function (arg) {
alert("finished h_world");
};
obj.h_world();