我试图设计一些类来支持回调功能。类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();
答案 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.");
}
}