Wie kann ich überprüfen, ob ein anonymes Objekt als solches erstellt wurde:
var myObj = {
prop1: 'no',
prop2: function () { return false; }
}
hat in der Tat eine prop2 definiert?
prop2
wird immer als Funktion definiert, aber für einige Objekte ist es nicht erforderlich und wird nicht definiert.
Ich habe versucht, was hier vorgeschlagen wurde: Wie kann ich feststellen, ob das native JavaScript-Objekt eine Eigenschaft / Methode hat? aber ich denke nicht, dass es für anonyme Objekte funktioniert.
javascript
Omar
quelle
quelle
Antworten:
typeof myObj.prop2 === 'function';
wird Sie wissen lassen, ob die Funktion definiert ist.quelle
if(typeof myObj[propoeryStr] === 'function') { ... }
Sie wollen
hasOwnProperty()
:Referenzen: Mozilla , Microsoft , phrogz.net .
quelle
var my_obj = {'node1': document.createElement('div')};
dannmy_obj.node1.hasOwnProperty('cloneNode')
false ist. Seans Lösung wird jedoch korrekt true zurückgeben:typeof my_obj.node1.cloneNode === 'function'
3 Optionen
typeof myObj.prop2 === 'function'
wenn der Eigenschaftsname nicht dynamisch / generiert istmyObj.hasOwnProperty('prop2')
Wenn der Eigenschaftsname dynamisch ist, überprüfen Sie nur, ob es sich um eine direkte Eigenschaft handelt (nicht in der Prototypenkette).'prop2' in myObj
Wenn der Eigenschaftsname dynamisch ist, überprüfen Sie die Prototypenkettequelle
Was meinst du mit einem "anonymen Objekt"?
myObj
ist nicht anonym, da Sie einer Variablen ein Objektliteral zugewiesen haben. Sie können dies einfach testen:quelle
Ein Weg, es zu tun, muss sein
if (typeof myObj.prop1 != "undefined") {...}
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich bin überrascht, dass alle Antworten sicherstellen, dass die Methode existiert und eine Funktion ist, wenn das OP nur die Existenz überprüfen möchte. Um zu wissen, dass es sich um eine Funktion handelt (wie viele angegeben haben), können Sie Folgendes verwenden:
Sie können aber auch als Bedingung verwenden:
Oder auch:
Dies liegt daran, dass eine Funktion nach
true
und nachundefined
bewertetfalse
. Wenn Sie also wissen, dass das Mitglied möglicherweise nur eine Funktion ist, können Sie Folgendes verwenden:Oder in einem Ausdruck:
quelle