Ich möchte in der Lage sein, ein String-Literal zu übergeben,
%Vor%oder ein JavaScript-Objekt,
%Vor%als Argument für eine Funktion und verschiedene Aktionen abhängig davon, ob es sich um eine Zeichenfolge oder ein Objekt handelt. Wie kann ich feststellen, was wahr ist?
Um genau zu sein, möchte ich über die Eigenschaften eines Objekts iterieren und etwas analysieren, wenn eine Eigenschaft eine Zeichenkette ist, aber rekursiv verschachtelt wird, wenn die Eigenschaft ein Objekt ist. Ich habe herausgefunden, wie man $.each()
verwendet, um über die Eigenschaften des Objekts zu iterieren, aber wenn ich das nur mit der Zeichenfolge mache, behandelt es die Zeichenfolge als ein Array von Buchstaben und nicht als eine einzige Sache. Kann ich das auf andere Weise umgehen?
jQuery
%Vor% Es gibt ähnliche Methoden wie $.isArray()
oder $.isFunction()
innerhalb der jQuery-Bibliothek.
Natives JavaScript
%Vor% Die Verwendung von hack'ish
way mit toString
hat den Vorteil, dass Sie feststellen können, ob es sich um really
ein Objekt und array
handelt. Sowohl Objekte als auch Arrays würden object
mit typeof element
zurückgeben.
Kurz gesagt, Sie können sich nicht darauf verlassen, dass der Operator typeof
zwischen wahrem objects
und arrays
unterscheidet. Dafür brauchst du das toString.call()
. Wenn Sie nur wissen müssen, ob es ein Objekt ist oder nicht, ist typeof
einfach in Ordnung.
Daher:
%Vor%UPDATE:
Einige weitere Überlegungen:
Siehe @Andy E unten.
typeof null
gibt auch "object"
zurück. Dasselbe gilt für jedes andere Objekt, einschließlich Arrays.
Probieren Sie den typeof -Operator aus. Es gibt object
für Objekte und string
für Strings zurück.
Ich hatte ein ähnliches Problem und ich denke, ich habe eine Lösung gefunden. Hier ist mein Beispielcode für jeden, der interessiert ist.
%Vor%Dadurch werden alle Eigenschaften eines Objekts durchlaufen - auch wenn die Eigenschaften selbst Objekte sind - und eine Zeichenfolge mit den folgenden Werten in Punktsyntax zurückgegeben.
%Vor%Ich habe die Inspiration von DavidPirek.com - Danke Mr Pirek!
Tags und Links javascript string jquery object