当我尝试结构如下的代码时:
function foo(bar) {
this.bar = bar;
this.rec = function(e) {
return function() {
var elem = $('');
var new_foo = new foo(elem);
};
};
this.init = function() {
this.bar.click(this.rec());
};
}
var obj = new foo($(''));
我得到TypeError:foo不是构造函数 我认为这与范围有关,但我不知道我尝试做的事情是否可行。有没有办法让我在同一个类中的click函数中创建同一个类的新实例?或者我只是以错误的方式解决这个问题?
编辑:有些人指出我正在替换这个功能,但这只是一个错字,在这个例子中,这并没有发生在我遇到问题的最终代码中。但是谢谢你指出来,我现在正在编辑它。
答案 0 :(得分:3)
var foo = new foo($(''));
You're overwriting the foo
constructor function with an instance of foo.
Don't do that. Use a different variable name.