2016-07-14 8 views
0

Ich habe eine Aufgabe
me = { name: "Mo", age: 28, } Und ich will sehen, ob dieses Objekt die Eigenschaft „Höhe“ zum Beispiel zuzugreifen. (was es nicht tut) Wie kann ich das tun? Wenn es zum Beispiel die Eigenschaft "Höhe" hat, kann ich ihm einen Wert von "5,7" geben.JavaScript Objekteigenschaft Name Wert nicht

BITTE BEACHTEN SIE: Ich möchte nicht nach der Eigenschaft VALUE (me.name) suchen, sondern nach der Eigenschaft NAME.

Vielen Dank.

Antwort

6

Sie können das in Betreiber:

if ("height" in me) { 
    // object has a property named "height" 
} 
else { 
    // no property named "height" 
} 

Beachten Sie, dass, wenn das Objekt mit dem Namen keine Eigenschaft haben „Höhe“, können Sie immer noch eine solche Eigenschaft hinzufügen:

me.height = 100; 

, das funktioniert ob das Objekt zuvor eine "height" -Eigenschaft hatte oder nicht.

dort ist auch die .hasOwnProperty Methode geerbt von Object Prototyp:

if (me.hasOwnProperty("height")) 

Der Unterschied zwischen diesem und ein Test mit in ist, dass .hasOwnProperty() nur true zurück, wenn die Eigenschaft vorhanden ist und liegt als direktes Eigenschaft auf dem Objekt und nicht über seine Prototypkette geerbt.

+0

als Sie verwenden können, . Gibt es eine Möglichkeit, den Eigenschaftsnamen ohne die Verwendung einer bedingten Anweisung auf der Konsole auszugeben? Drucken Sie einfach den Namen der Eigenschaft> (und ohne die Verwendung einer For-In-Schleife)? – zzgooloo

1

direkte Antwort verwenden:

if (Object.keys(me).indexOf("name") >= 0) { 
    //do the stuff 
} 

ABER, was Sie tun sollen, sind ein vertragliches Objekt/Klasse/Modul erstellen, mich erwarten, dass die height Eigenschaft haben. Wenn dies nicht der Fall ist, sollten Sie eine Ausnahme auslösen. Die schlimmsten Dinge in der Programmierung sind halb Arsch Erwartungen. Es bricht nicht nur die SOLID Vorschriften, sondern führt auch zu Szenarien wie diese, wo die einzige Lösung repetitiv sind, wenn/switch-Anweisungen, um sicherzustellen, alle Möglichkeiten zur Behandlung von ...

1

Sie

if (me.hasOwnProperty('height')) 
{ 
} 
else 
{ 
}