【发布时间】:2012-05-26 12:54:57
【问题描述】:
我有一个发行者,我在这个“对象”中丢失了“这个”。下面一段 javascript 的输出给了我“some-id”,然后是“undefined”。当我在回调函数中使用“this”时,范围超出了对象,它不能再使用“this”了。如何让回调使用“this”或至少可以访问该对象?
由于我将制作多个对象,因此我将无法创建类似“静态”的存储。请帮助这个 javascript n00b ;-)
这是我的测试代码,您可以使用它来重现我的问题。我想要的是 CheckBox.doSomething() 返回 this.id 的值,该值应该与此测试用例的 some-id 匹配。
function CheckBox(input_id) {
this.id = input_id;
this.doSomething();
$('#some-element').click(this.doSomething);
}
Checkbox.prototype.doSomething = function() {
alert(this.input_id);
}
var some_box = new CheckBox('some-id');
some_box.doSomething();
$('#some-element').click();
编辑:我什至无法按照我的意愿让它工作:
function CheckBox2(input_id) {
this.id = input_id;
alert(this.id);
}
CheckBox2.prototype.doSomething = function() {
alert(this.input_id);
}
var some_box = new CheckBox2('some-id');
some_box.doSomething();
【问题讨论】:
-
@Lucero 该技术仅适用于动态创建的函数,不适用于原型中的函数。
标签: javascript object callback this scope