Déclarer la propriété d'objet javascript avec une fonction ne fonctionnant pas

Je fais un jeu textuel de texte, et j'ai fait un joueur d'objet comme ça:

var player = { displayText: "<span>you</span>", currentPosition: 0, level: 1, health: function() { return 10 + (this.level * 15) }, strength: function() { return this.level * 5 }, hitRating: 4 } 

Je crois comprendre que vous pouvez donner à un objet une fonction de propriété.

Cependant, lorsque alert(player.health) je reçois:

 function() { return 10 + (this.level * 15) } 

Qu'est-ce que je fais mal? Ne sont-ils pas en mesure de déclarer une propriété d'objet de cette façon? Existe-t-il un moyen de générer automatiquement la valeur de player.health tout moment, on l'appelle plus tard?

player.health est une fonction. Pour appeler une fonction, vous devez mettre () après:

 alert(player.health()); 

Si vous souhaitez créer une propriété avec l'accesseur sur l'objet JS, la manière appropriée de l'utiliser est d'utiliser Object.defineProperty .

Dans ton cas:

 // original object var player = { displayText: "<span>you</span>", currentPosition: 0, level: 1, // health: function() { return 10 + (this.level * 15) }, strength: function() { return this.level * 5 }, hitRating: 4 } // create property with accessor method Object.defineProperty(player, "health", { get: function () { return 10 + (player.level * 15) } }) // call the property alert(player.health); // 25 player.level++; alert(player.health); // 40 

Vous devez appeler la fonction, player.health()