如何设计一个JavaScript类以干净的方式支持回调?

时间:2010-04-06 19:43:15

标签: javascript

我试图设计一些类来支持回调功能。类MyClass1和MyClass2不起作用。 Class3工作,但设计真的很糟糕。它使用外部类引用来调用方法。我想实现一个类似于MyClass1的设计,它更加清晰,不会与外部变量耦合。这个回调机制对于ajax调用来说真的很棒。 $ j只是jQuery的别名。

function MyClass1() {  
    $j("#myDiv1").click(this.func);

    this.func = function() {
        alert("Inside method.");
    }
}

var _class2;  
function MyClass2() {  
    _class2 = this;  
    $j("#myDiv2").click( _class2.func );

    this.func = function() {
        alert("Inside method.");
    }
}

function MyClass3() {  
    $j("#myDiv3").click( function() { cls3.func(); } );   

    this.func = function() {
        alert("Inside method.");
    }
}

var cls1 = new MyClass1();  
var cls2 = new MyClass2();  
var cls3 = new MyClass3();  

1 个答案:

答案 0 :(得分:5)

Closures是你的朋友。

function MyClass()
{
  // This local variable can be closed by the anonymous
  // function below
  var self = this;

  $('#myDiv1').click( function()
  {
    self.func();
  });

  this.func = function()
  {
    alert("Inside method.");
  }
}