我有一个发布器,在其中我失去了对象内的this
。以下JavaScript代码片段的输出会先给我"some-id"
,然后是undefined
。当我在回调函数中使用this
时,作用域超出了对象范围,无法再使用this
。如何让回调函数使用“this”或至少访问该对象?
由于我将创建多个对象,所以无法创建类似静态存储的东西。
以下是您可以用来重现我的问题的测试代码。我希望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();
this
和“this”关键字是如何工作的? - VLAZ