1

私は - どうやら - やや奇妙な問題に遭遇しました。次のような 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関数値を持つ別のプロパティ内から使用して、数値を持つプロパティを参照できないのはなぜですか? 数値以外の値で機能するのはなぜですか? これはバグですか、それとも意図したものですか?

親オブジェクトの名前を単純に使用して数値を更新できるため、これはそれほど大きな問題ではありませんが、なぜそうなのかについては興味があります。

4

1 に答える 1