Warum nicht
verwenden?typeof obj === "object"
Weil wir das nicht testen wollten. Die Funktion _.isObject
soll zurückgeben, ob das Argument ein Referenzwert ist (d. H. Ein Objekt, zu dem Sie Eigenschaften hinzufügen können) und ob es kein primitiver Wert ist.
Der Operator typeof
ist dafür nicht verlässlich. Es liefert auch "object"
für den Wert null
und ergibt nicht "object"
für aufrufbare Objekte (d. H. Funktionen).
Stattdessen können wir die Funktion Object
verwenden, die versuchen wird, ihr Argument zu "werfen" ein Objekt über ToObject und liefert das Argument genau dann, wenn es bereits ein Objekt ist.
Der Unterschied ist mit dem kniffligen Wert null
. typeof null
gibt 'object'
zurück, was offensichtlich ziemlich verwirrend ist und nicht das gewünschte Ergebnis.
Wenn Sie jedoch den Objektkonstruktor mit null
verwenden, wird ein neues Objekt erstellt (siehe MDN ). Das bedeutet, dass Sie zwischen Objekten und null
unterscheiden können, was typeof
nicht kann.
Tags und Links javascript underscore.js