79 votes

hasOwnProperty en javascript

function Shape() {
    this.name = "Generic";
    this.draw = function() {
        return "Drawing " + this.name + " Shape";
    };
}

function welcomeMessage()
{
    var shape1 = new Shape();
    //alert(shape1.draw());
    alert(shape1.hasOwnProperty(name));  //this is returning false
}

"welcomeMessage" appelé le corps.événement onload. Je m'attendais à shape1.hasOwnProperty(nom) renvoie la valeur true. Mais son retour faux. Quel est le comportement correct?

158voto

SLaks Points 391154

hasOwnProperty est normale en fonction Javascript qui prend un argument de type chaîne.

Lorsque vous appelez shape1.hasOwnProperty(name) vous êtes de passage à la valeur de l' name variable (qui n'existe pas), comme il le ferait si vous avez écrit alert(name).

Vous devez appeler hasOwnProperty avec une chaîne de caractères contenant name, comme ceci: shape1.hasOwnProperty("name").

19voto

Pablo Cabrera Points 3245

hasOwnProperty attend le nom de la propriété en tant que chaîne, de sorte qu'il serait shape1.hasOwnProperty("name")

3voto

Ernelli Points 2133

Essayez ceci:

fonction welcomeMessage()
{
 var shape1 = new Shape();
//alert(shape1.draw());
alert(shape1.hasOwnProperty("nom"));
}

Lorsque vous travaillez avec la réflexion dans l'JavaScript, des objets membres sont toujours considérés comme le nom d'une chaîne de caractères. Par exemple:

for(i in obj) { ... }

La boucle itérateur i doit avoir une valeur de chaîne avec le nom de la propriété. Pour l'utiliser dans le code que vous avez à l'adresse de la propriété à l'aide de la matrice de l'opérateur comme ceci:

 for(i in obj) {
 alert("La valeur de l'obj." + i + " = " + obj[i]);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X