Si je veux tester l 'objet x
a une propriété définie y
indépendamment de la valeur de x.y
at - il un meilleur moyen que le
if ( typeof(x.y) != 'undefined' ) ...
?
Si je veux tester l 'objet x
a une propriété définie y
indépendamment de la valeur de x.y
at - il un meilleur moyen que le
if ( typeof(x.y) != 'undefined' ) ...
?
Si vous essai pour les propriétés sur l'objet lui-même (et non une partie de sa chaîne de prototype), vous pouvez utiliser .hasOwnProperty()
:
if (x.hasOwnProperty('y')) {
// ......
}
Vous pouvez utiliser l' in
opérateur de test pour des propriétés héritées.
if ('y' in x) {
// ......
}
Si vous voulez savoir si l'objet physiquement contient la propriété @gnarf de la réponse à l'aide de hasOwnProperty
vont faire le travail.
Si vous avez envie de savoir si la propriété n'existe nulle part, que ce soit sur l'objet lui-même ou dans le prototype de la chaîne, vous pouvez utiliser l' in
de l'opérateur.
if ('prop' in obj) {
// ...
}
Ex.:
var obj = {};
'toString' in obj == true; // inherited from Object.prototype
obj.hasOwnProperty('toString') == false; // doesn't contains it physically
Une caractéristique de mon code d'origine
if ( typeof(x.y) != 'undefined' ) ...
cela peut être utile dans certaines situations, c'est qu'il est sûr d'utiliser si x
existe ou non. Avec l'une ou l'autre des méthodes de la réponse de gnarf, il faut d'abord tester x
s'il y a un doute s'il existe.
Alors peut-être que les trois méthodes ont leur place dans un sac de trucs.
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.