admin管理员组

文章数量:1405190

How do I create a custom event for a javascript class?
Example Code

function somefunction(url){
   this.h_world = function(){/*some random code to do*/ };
}

var hw = new somefunction();

Now, for a very simple example, how do I create a custom event handler for this when hw.h_world has finished executing and return some data with it?

For example

var hw = new somefunction();
hw.h_world();
hw.finished_h_world = function(somedata){
  alert(somedata);
}

How do I create a custom event for a javascript class?
Example Code

function somefunction(url){
   this.h_world = function(){/*some random code to do*/ };
}

var hw = new somefunction();

Now, for a very simple example, how do I create a custom event handler for this when hw.h_world has finished executing and return some data with it?

For example

var hw = new somefunction();
hw.h_world();
hw.finished_h_world = function(somedata){
  alert(somedata);
}
Share Improve this question asked Mar 12, 2012 at 15:54 Kevin PeiKevin Pei 5,8727 gold badges40 silver badges55 bronze badges 1
  • No events are generated by the simple execution of JavaScript code (outside of some special behavior in Firefox around property "watch" settings). – Pointy Commented Mar 12, 2012 at 15:59
Add a ment  | 

2 Answers 2

Reset to default 5

What you need is a callback function:

function somefunction(url){
   this.h_world = function(callback){
      var somedata = 'some data';
      callback(somedata);
   };
}

And then:

var hw = new somefunction();
hw.h_world(function(somedata){
    alert(somedata); // Will alert 'some data';
});

Here is a jsfiddle: http://jsfiddle/remibreton/xzeEd/

you can pass a callback function to h_world function and execute it on finish of it

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
      }
   };
}

or you can add a function to your class like this

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();

本文标签: javascript create class eventStack Overflow