私は - どうやら - やや奇妙な問題に遭遇しました。次のような JavaScript オブジェクトがあるとします。
var Object = {
Property1: 0,
Property2: 1,
TxtProperty: "Sample text",
Update: function () {
this.Property1++; // Doesn't work
Object.Property2++; // Does work
this.TxtProperty = "Hello world"; // Does work
$('#prop-1').text(this.Property1); // Prints NaN
$('#prop-2').text(Object.Property2); // Prints correct value
$('#txt-prop').text(this.TxtProperty); // Prints correct value
}
};
デモンストレーションについては、このフィドルを参照してください。[開始] をクリックしてタイマーを開始し、値を更新します。ご覧のとおり、使用parseInt
しても役に立ちませんでした。
これを Firefox、Chrome、IE10 でテストしました。それらはすべて同じ動作を示します。
this
関数値を持つ別のプロパティ内から使用して、数値を持つプロパティを参照できないのはなぜですか? 数値以外の値で機能するのはなぜですか? これはバグですか、それとも意図したものですか?
親オブジェクトの名前を単純に使用して数値を更新できるため、これはそれほど大きな問題ではありませんが、なぜそうなのかについては興味があります。