if (someVar.hasOwnProperty('someProperty') ) {
// do something();
} else {
// do somethingElse();
}
Was ist die richtige Verwendung / Erklärung hasOwnProperty('someProperty')
?
Warum können wir nicht einfach someVar.someProperty
überprüfen, ob ein Objekt someVar
eine Eigenschaft mit Namen enthält someProperty
?
Was ist in diesem Fall eine Immobilie?
Welche Eigenschaft prüft dieses Javascript?
javascript
object
hasownproperty
FLIEGE
quelle
quelle
Antworten:
hasOwnProperty
Gibt einen booleschen Wert zurück, der angibt, ob das Objekt, für das Sie es aufrufen, eine Eigenschaft mit dem Namen des Arguments hat. Beispielsweise:Es wird jedoch nicht die Prototypkette des Objekts betrachtet.
Es ist nützlich, es zu verwenden, wenn Sie die Eigenschaften eines Objekts mit dem
for...in
Konstrukt auflisten.Wenn Sie alle Details sehen möchten, ist die ES5-Spezifikation wie immer ein guter Ort, um nachzuschauen .
quelle
window
eval
eher als Code als als globaler oder Funktionscode ausgeführt). Ich habe es in einer leeren HTML-Seite versucht und den Fehler "Null kann nicht in Objekt konvertiert werden" erhalten.Hier ist eine kurze und präzise Antwort:
In Javascript verfügt jedes Objekt über eine Reihe integrierter Schlüssel-Wert-Paare, die Metainformationen zum Objekt enthalten. Wenn Sie alle Schlüssel-Wert-Paare mit
for...in
Konstrukt / Schleife für ein Objekt durchlaufen, durchlaufen Sie auch diese Meta-Informationen-Schlüssel-Wert-Paare (was Sie definitiv nicht wollen).Durch
hasOwnPropery(property)
Herausfiltern dieser unnötigen Schleifen durch Metainformationen und direktes Überprüfen, ob der Parameterproperty
eine vom Benutzer angegebene Eigenschaft im Objekt ist oder nicht. Mit Herausfiltern meine ich, dashasOwnProperty(property)
sieht nicht so aus, als obproperty
es in der Prototypenkette von Object, auch bekannt als Meta-Information, existiert.Darauf
true/false
basierend wird ein Boolescher Wert zurückgegeben .Hier ist ein Beispiel:
Ich hoffe es ist klar!
quelle
console.log(Object.prototype....
; meinst duconsole.log(fruitObject.
? Fruchtobjekt oder Objekt?for (var key in fruitObject) { ... }
js ohnehin nur Zyklen über Nicht-Prototyp-Schlüssel durchführe, fehlt mir etwas oder hat die JS-Laufzeit die Art und Weise geändert, wie sie für die Eingabe von Objekten verwendet werden Schleifen?es prüft:
Gibt einen booleschen Wert zurück, der angibt, ob ein Objekt eine Eigenschaft mit dem angegebenen Namen hat
Die hasOwnProperty- Methode gibt true zurück, wenn das Objekt eine Eigenschaft mit dem angegebenen Namen hat, false, wenn dies nicht der Fall ist. Diese Methode überprüft nicht, ob die Eigenschaft in der Prototypenkette des Objekts vorhanden ist. Die Eigenschaft muss Mitglied des Objekts selbst sein.
Beispiel:
quelle
Zusammenfassung:
hasOwnProperty()
ist eine Funktion, die für jedes Objekt aufgerufen werden kann und eine Zeichenfolge als Eingabe verwendet. Es wird ein Boolescher Wert zurückgegeben, dhtrue
wenn sich die Eigenschaft im Objekt befindet, andernfalls wird false zurückgegeben.hasOwnProperty()
befindet sich aufObject.prototype
und ist somit für jedes Objekt verfügbar.Beispiel:
In diesem Beispiel wird ein neues Personenobjekt erstellt. Jede Person hat ihren eigenen Namen, der im Konstruktor initialisiert wird. Das Alter befindet sich jedoch nicht auf dem Objekt, sondern auf dem Prototyp des Objekts. Daher
hasOwnProperty()
kehrttrue
für Name undfalse
Alter zurück.Praktische Anwendungen:
hasOwnProperty()
kann sehr nützlich sein, wenn Sie ein Objekt mit einerfor in
Schleife durchlaufen. Sie können damit überprüfen, ob die Eigenschaften vom Objekt selbst stammen und nicht vom Prototyp. Beispielsweise:quelle
Mit object.hasOwnProperty ( p ) bestimmen Sie, ob das Objekt eine aufzählbare Eigenschaft p - hat.
Das Objekt kann einen eigenen Prototyp haben, bei dem jeder Instanz des Objekts Standardmethoden und -attribute zugewiesen werden. hasOwnProperty gibt true nur für die Eigenschaften zurück, die speziell im Konstruktor festgelegt oder später zur Instanz hinzugefügt wurden.
Um festzustellen, ob p für das Objekt überhaupt irgendwo definiert ist, verwenden Sie if ( p Instanz des Objekts), wobei p zu einer Eigenschaftsnamenzeichenfolge ausgewertet wird.
Beispielsweise haben standardmäßig alle Objekte eine 'toString'-Methode, die jedoch nicht in hasOwnProperty angezeigt wird.
quelle
hasOwnProperty ist eine normale Javascript-Funktion, die ein String-Argument akzeptiert.
In Ihrem Fall überprüft somevar.hasOwnProperty ('someProperty'), ob die Funktion somevar eine Eigenschaft hat oder nicht, und gibt true und false zurück
Sagen
quelle
hasOwnProperty
ist eine richtige Art zu überprüfen,object
hat eineproperty
oder nicht.someVar.someProperty
kann nicht alternativ zu dieser Situation verwendet werden. Die folgende Bedingung zeigt einen guten Unterschied:Daher
someVar.isFirst
kann nicht alternativ zu verwendet werdensomeVar.hasOwnProperty('isFirst')
.quelle
Es wird geprüft, ob ein Objekt eine Eigenschaft hat .
if(obj.prop)
Soweit ich weiß, funktioniert es genauso .quelle
obj.prop
folgt der Prototypenkette,hasOwnProperty
nichtprop
der Wert falsch ist.if(obj.hasOwnProperty('prop'))
wird sein,true
währendif(obj.prop)
wird seinfalse
.Szene A:
Szene B:
Da JS die Eigenschaft von hasOwnProperty nicht schützt
, können Sie diese verwenden
quelle