Pour sa propre propriété:
var loan = { amount: 150 };
if(Object.prototype.hasOwnProperty.call(loan, "amount"))
{
//will execute
}
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
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
// 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)
const yoshi = { skulk: true };
const hattori = { sneak: true };
const kuma = { creep: true };
if ("skulk" in yoshi)
console.log("Yoshi can skulk");
if (!("sneak" in yoshi))
console.log("Yoshi cannot sneak");
if (!("creep" in yoshi))
console.log("Yoshi cannot creep");
Object.setPrototypeOf(yoshi, hattori);
if ("sneak" in yoshi)
console.log("Yoshi can now sneak");
if (!("creep" in hattori))
console.log("Hattori cannot creep");
Object.setPrototypeOf(hattori, kuma);
if ("creep" in hattori)
console.log("Hattori can now creep");
if ("creep" in yoshi)
console.log("Yoshi can also creep");
// 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 ...
var loan = { amount: 150 };
loan.installment = undefined;
if("installment" in loan) // correct
{
// will execute
}
if(typeof loan["installment"] !== "undefined") // incorrect
{
// will not execute
}
hasOwnProperty
méthode est écrasée, vous pouvez compter sur leObject.prototype.hasOwnProperty.call(object, property)
."