Für eigenes Eigentum:
var loan = { amount: 150 };
if(Object.prototype.hasOwnProperty.call(loan, "amount"))
{
//will execute
}
Hinweis: Die Verwendung von Object.prototype.hasOwnProperty ist besser als credit.hasOwnProperty (..), falls in der Prototypenkette eine benutzerdefinierte hasOwnProperty definiert ist (was hier nicht der Fall ist)
var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
So schließen vererbten Eigenschaften in der Erkenntnis , die Verwendung in Operator: (aber Sie müssen ein Objekt auf der rechten Seite platzieren ‚in‘, primitive Werte werden Fehler aus, zum Beispiel ‚Länge‘ in ‚Heimat‘ wird Fehler werfen, aber ‚Länge‘ in neuem String ('home') nicht)
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
Hinweis: Es könnte versucht sein, typeof und [] property accessor als folgenden Code zu verwenden, der nicht immer funktioniert ...
var loan = { amount: 150 };
loan.installment = undefined;
if("installment" in loan) // correct
{
// will execute
}
if(typeof loan["installment"] !== "undefined") // incorrect
{
// will not execute
}
hasOwnProperty
Sie sich auf das verlassen können , wenn die Methode überschrieben wirdObject.prototype.hasOwnProperty.call(object, property)
."