3

プログラムに次のオブジェクトがあります

function Player(id) {
    this.id = id;
    this.healthid = this.id + "health";
    this.displayText = "blah blah";
    this.inFight = false;
    this.currentLocation = 0;
    this.xp = 0;
    this.level = 1;
}

var player = new Player('player');

player.currentHealth = player.health;

プロパティ名を次のように出力します

function displayStats() {
    var statsHtml = "";
    for ( var prop in player ) {
        statsHtml += "<p id = 'displayPlayerHealth'>" + prop + "</p>";
    }

    $('.stats').html( statsHtml);
    console.log(statsHtml);
}

displayStats();

これは正常に動作しますが、他のプロパティは私がそう宣言しています

Object.defineProperty(player,"health",{ 
    set: function() { 
    return 10 + ( this.level * 15 );
    }, 
    get: function() { 
    return 10 + ( this.level * 15 );
    } 
} );


Object.defineProperty(player,"strength",{ 
    set: function() { 
        return ( this.level * 5 );
    }, 
    get: function() { 
        return ( this.level * 5 );
    } 
} );

Object.defineProperty(player,"hitRating",{ 
    set: function() { 
        return 3 + ( this.level );
    }, 
    get: function() { 
        return 3 + ( this.level );
    } 
} );

ここでフィドルを印刷しないでください。

今、私はこのコードを入れて、それらが定義されていることを確認します

console.log(player.hitRating);

これは4、まさに私が期待するものを私に与えます。

で作成されたオブジェクトのプロパティをループするにはどうすればよいObject.definePropertyですか?

私のコードに関する他のコメントやヘルプも大歓迎です。

4

1 に答える 1