この「オブジェクト」内の「これ」を失う発行者がいます。次のJavaScriptの出力は、「some-id」、「undefined」の順になります。コールバック関数内で「this」を使用すると、スコープがオブジェクトの外に出て、「this」を使用できなくなります。'this'を使用するようにコールバックを取得する、または少なくともオブジェクトにアクセスするにはどうすればよいですか?
複数のオブジェクトを作成するため、ストレージのような「静的」を作成することはできません。このjavascriptn00bを助けてください;-)
これが私の問題を再現するために使用できる私のテストコードです。私が欲しいのは、このテストケースに一致するはず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();