Erwägen:
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
auf der body.onload
Veranstaltung angerufen .
Ich habe erwartet shape1.hasOwnProperty(name)
, true zurückzugeben, aber es wird false zurückgegeben.
Was ist das richtige Verhalten?
javascript
Thiyaneshwaran S.
quelle
quelle
"name"
im Gegensatz zuname
Antworten:
hasOwnProperty
ist eine normale JavaScript-Funktion, die ein Zeichenfolgenargument akzeptiert.Wenn Sie aufrufen, übergeben
shape1.hasOwnProperty(name)
Sie ihm den Wert dername
Variablen (die nicht existiert), genau wie beim Schreibenalert(name)
.Sie müssen
hasOwnProperty
mit einer Zeichenfolge aufrufen, die Folgendes enthältname
:shape1.hasOwnProperty("name")
.quelle
hasOwnProperty
erwartet den Eigenschaftsnamen als Zeichenfolge, so wäre esshape1.hasOwnProperty("name")
quelle
Versuche dies:
Bei der Arbeit mit Reflektion in JavaScript werden Mitgliedsobjekte immer als Name als Zeichenfolge bezeichnet. Zum Beispiel:
for(i in obj) { ... }
Der Schleifeniterator i enthält einen Zeichenfolgenwert mit dem Namen der Eigenschaft. Um dies im Code zu verwenden, müssen Sie die Eigenschaft mit dem Array-Operator wie folgt adressieren:
quelle
hasOwnProperty () ist eine nette Eigenschaft zum Überprüfen von Objektschlüsseln. Beispiel:
var obj = {a:1, b:2}; obj.hasOwnProperty('a') // true
quelle