Je vérifie l'existence d'une propriété d'objet avec une variable contenant le nom de la propriété en question.
var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";
if(myObj.myProp){
alert("yes, i have that property");
};
C'est undefined
parce qu'il cherche myObj.myProp
mais je veux qu'il vérifiemyObj.prop
javascript
object
Slopeside Creative
la source
la source
hasOwnProperty
méthode est écrasée, vous pouvez compter sur leObject.prototype.hasOwnProperty.call(object, property)
."Réponses:
Ou
Ou
Notez que
hasOwnProperty
ne vérifie pas les propriétés héritées, alors que lein
fait. Par exemple,'constructor' in myObj
c'est vrai, mais cemyObj.hasOwnProperty('constructor')
n'est pas le cas.la source
hasOwnProperty()
est mieux alorsmyObj[myProp]
(à partir d'autres réponses) car cela fonctionne même si la valeur demyProp
est 0'qqq'.hasOwnProperty('length')
esttrue
, vous pouvez le faire.myProp
est 0, l'instruction if ressemblerait àif (myObj[0])
laquelle ifmyObj
a des propriétés, l'expression exprimeraittrue
. Et cemyObj[0]
n'est peut-être pas la propriété que vous recherchez.Vous pouvez utiliser hasOwnProperty , mais en fonction de la référence, vous avez besoin de guillemets lorsque vous utilisez cette méthode:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
Une autre façon est d'utiliser dans l' opérateur, mais vous avez besoin de devis ici aussi:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in
la source
hasOwnProperty()
on met en œuvre.Merci pour l'assistance de tout le monde et pour avoir poussé à se débarrasser de la déclaration eval. Les variables devaient être entre parenthèses, pas la notation par points. Cela fonctionne et est un code propre et correct.
Chacune de ces variables est: appChoice, underI, underObstr.
la source
tData.tonicdata[appChoice]
résulte une valeur qui n'a pas de propriété / index qui correspondunderI
, alors cela se traduira par uneTypeError
levée.Pour sa propre propriété:
Remarque: il est préférable d' utiliser Object.prototype.hasOwnProperty que loan.hasOwnProperty (..), dans le cas où un hasOwnProperty personnalisé est défini dans la chaîne de prototypes (ce qui n'est pas le cas ici), comme
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
Pour inclure des propriétés héritées dans la recherche, utilisez l' opérateur in : (mais vous devez placer un objet sur le côté droit de 'in', les valeurs primitives génèreront une erreur, par exemple 'length' dans 'home' générera une erreur, mais 'length' dans la nouvelle chaîne ('home') ne le sera pas)
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in
Remarque: On peut être tenté d'utiliser l'accesseur typeof et [] comme code suivant qui ne fonctionne pas toujours ...
la source
Un moyen beaucoup plus sûr de vérifier si une propriété existe sur l'objet est d'utiliser un objet vide ou un prototype d'objet pour appeler
hasOwnProperty()
Référence à partir des documents Web MDN - Object.prototype.hasOwnProperty ()
la source
hasOwnProperty
code JavaScript qui pourrait faire quelque chose de mal comme l'annulation , aucune quantité de gardes comme celle-ci ne rendra votre code sûr ou sécurisé.Vous pouvez utiliser
hasOwnProperty()
ainsi que l'in
opérateur.la source