Wenn ich in JavaScript / jQuery alert
ein Objekt habe, erhalte ich entweder [object]
oder [object Object]
Gibt es eine Möglichkeit zu wissen:
Was ist der Unterschied zwischen diesen beiden Objekten
Was für ein Objekt ist das?
Was alle Eigenschaften dieses Objekt enthält und Werte jeder Eigenschaft
?
javascript
jquery
Saiful
quelle
quelle
Antworten:
Sie können die Schlüssel und Werte eines Objekts nachschlagen, indem Sie entweder die native JavaScript-
for in
Schleife aufrufen :oder mit der
.each()
Methode von jQuery :Mit Ausnahme von sechs primitiven Typen ist alles in ECMA- / JavaScript ein Objekt. Arrays; Funktionen; Alles ist ein Objekt. Selbst die meisten dieser Grundelemente sind tatsächlich auch Objekte mit einer begrenzten Auswahl an Methoden. Sie werden bei Bedarf in Gegenstände unter der Haube gegossen. Um den Namen der Basisklasse zu ermitteln, können Sie die
Object.prototype.toString
Methode für ein Objekt wie folgt aufrufen :Das Obige wird ausgegeben
[object Array]
.Es gibt mehrere andere Klassennamen, wie
[object Object]
,[object Function]
,[object Date]
,[object String]
,[object Number]
,[object Array]
, und[object Regex]
.quelle
typeof new String("foo");
Erzeugt "Objekt", es ist ein umschlossener primitiver Wert, währendtypeof "foo";
"Zeichenfolge" erzeugt wird. Siehe auchvar str = 'primitive'; str.foo = 'bar'; /*wouldn't work*/
währendvar oStr = new String('string object'); oStr.foo = 'bar'; /*works*/
Wenn Sie es zu abstrakt gehen und sie alle Objekte aufrufe, dann können Sie mit dem Denken von Primitiven als primitive Objekte weg, aber es ist nicht gleichbedeutend mit der übergeordneten Klasse von wahren JavaScript - Objekten.console.log
, um Objekte zu inspizierenSo erhalten Sie eine Liste der Objekteigenschaften / -werte:
In Firefox - Firebug:
Standard-JS zum Abrufen von Objektschlüsseln von Slashnick :
Bearbeitungen:
<object>
oben ist durch die variable Referenz auf das Objekt zu ersetzen.console.log()
Wenn Sie sich nicht sicher sind, was das ist, können Sie es durch eine ersetzenalert()
quelle
Die einfache Antwort gibt an, dass
[object]
ein Hostobjekt keine interne Klasse hat. Ein Host-Objekt ist ein Objekt, das nicht Teil der ECMAScript-Implementierung ist, mit der Sie arbeiten, sondern vom Host als Erweiterung bereitgestellt wird. Das DOM ist ein häufiges Beispiel für Hostobjekte , obwohl in den meisten neueren Implementierungen DOM-Objekte vom nativen Objekt erben und interne Klassennamen haben (z. B. HTMLElement , Window usw.). Das proprietäre ActiveXObject von IE ist ein weiteres Beispiel für ein Hostobjekt.[object]
wird am häufigsten beim Warnen von DOM-Objekten in Internet Explorer 7 und niedriger angezeigt, da es sich um Hostobjekte handelt, die keinen internen Klassennamen haben.Sie können den "Typ" (interne Klasse) des Objekts mit abrufen
Object.prototype.toString
. Die Spezifikation erfordert, dass immer eine Zeichenfolge im Format zurückgegeben wird[object [[Class]]]
, wobei[[Class]]
der interne Klassenname wie Objekt , Array , Datum , RegExp usw. angegeben ist. Sie können diese Methode mit jedem Objekt (einschließlich Hostobjekten) anwendenViele
isArray
Implementierungen verwenden diese Technik, um festzustellen, ob ein Objekt tatsächlich ein Array ist (obwohl es im IE nicht so robust ist wie in anderen Browsern ).In ECMAScript 3 können Sie mithilfe einer
for...in
Schleife über aufzählbare Eigenschaften iterieren . Beachten Sie, dass die meisten integrierten Eigenschaften nicht aufzählbar sind. Gleiches gilt für einige Hostobjekte. In ECMAScript 5 können Sie mithilfe von ein Array abrufen, das die Namen aller nicht vererbten Eigenschaften enthältObject.getOwnPropertyNames(obj)
. Dieses Array enthält nicht aufzählbare und aufzählbare Eigenschaftsnamen.quelle
Ich hoffe, das zählt nicht als Spam. Nach endlosen Debug-Sitzungen schrieb ich demütig eine Funktion: http://github.com/halilim/Javascript-Simple-Object-Inspect
Verwendung
oder
quelle
Holen Sie sich FireBug für Mozilla Firefox.
verwenden
console.log(obj);
quelle
console.log
ist genauso effektiv, können Sie auf das Objekt im Protokoll klicken, um das "Spotlight.js ist eine großartige Bibliothek zum Durchlaufen des Fensterobjekts und anderer Hostobjekte, die nach bestimmten Dingen suchen.
Das wird dir gefallen.
quelle
Scannen eines Objekts auf die erste Absicht einer bestimmten Requisite:
quelle