У меня есть эмитент, где я теряю 'this' внутри этого "объекта". Вывод следующего фрагмента 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();
edit: Я даже не могу заставить это работать так, как хочу:
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();