hasOwnProperty in JavaScript

79

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
}

.welcomeMessageauf der body.onloadVeranstaltung angerufen .

Ich habe erwartet shape1.hasOwnProperty(name), true zurückzugeben, aber es wird false zurückgegeben.

Was ist das richtige Verhalten?

Thiyaneshwaran S.
quelle
5
es erfordert eine Zeichenfolge, "name"im Gegensatz zuname
AO_
Mögliches Duplikat von Javascript Was ist eine Eigenschaft in hasOwnProperty?
pathe.kiran

Antworten:

157

hasOwnProperty ist eine normale JavaScript-Funktion, die ein Zeichenfolgenargument akzeptiert.

Wenn Sie aufrufen, übergeben shape1.hasOwnProperty(name)Sie ihm den Wert der nameVariablen (die nicht existiert), genau wie beim Schreiben alert(name).

Sie müssen hasOwnPropertymit einer Zeichenfolge aufrufen, die Folgendes enthält name: shape1.hasOwnProperty("name").

SLaks
quelle
1
Vergessen Sie nicht, hasOwnProperty () hinzuzufügen. Gibt einen booleschen Wert zurück, der angibt,
ob die
18

hasOwnProperty erwartet den Eigenschaftsnamen als Zeichenfolge, so wäre es shape1.hasOwnProperty("name")

Pablo Cabrera
quelle
3

Versuche dies:

Funktion welcomeMessage ()
{
    var shape1 = neue Form ();
    // alert (shape1.draw ());
    alert (shape1.hasOwnProperty ("name"));
}}

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:

 für (i in obj) {
   alert ("Der Wert von obj." + i + "=" + obj [i]);
 }}
Ernelli
quelle
2

hasOwnProperty () ist eine nette Eigenschaft zum Überprüfen von Objektschlüsseln. Beispiel:

var obj = {a:1, b:2};

obj.hasOwnProperty('a') // true
KARTHIKEYAN.A
quelle
Zu "nice property" : Ist es nicht eine Funktion?
Peter Mortensen