假设我有这个:
test = function() {
this.init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
/*
Now, if I wanted it to call function "dosomething" defined in the class, how would I do that? this.dosomething() obviously doesn't work.
*/
});
}
this.dosomething = function() {
alert("Did it!");
}
}
var _go = new test();
_go.init();
答案 0 :(得分:2)
将“dosomething”调用封装到外部函数中的javascript变量中,并在内部函数中引用它。
this.init = function() {
var doSomething = this.doSomething;
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
doSomething();
});
}
这会创建一个闭包,其中内部函数仍然引用外部函数中的变量。
答案 1 :(得分:1)
您可以在丢失对班级的引用之前设置上下文:
test = function() {
var context = this;
init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
context.dosomething();
});
}
dosomething = function() {
alert("Did it!");
}
}
答案 2 :(得分:0)
事先将测试声明为新函数()。
test = new function() {};
test.init = function() {
test.foo();
};
我确信还有其他/更好的方法可以做到这一点,但我知道这很有效。