Qualunque cosa tu faccia, evitare obj .constructor.name o qualsiasi versione di stringa del costruttore. Che le grandi opere fino a uglify/minimizzazione dei vostro codice, allora si scatena in quanto il costruttore viene rinominato in qualcosa di oscuro (es: 'n') e il codice sarà ancora fare questo e mai partita:
// Note: when uglified, the constructor may be renamed to 'n' (or whatever),
// which breaks this code since the strings are left alone.
if (obj.constructor.name === 'SomeObject') {}
Nota:
// Even if uglified/minified, this will work since SomeObject will
// universally be changed to something like 'n'.
if (obj instanceof SomeObject) {}
(BTW, ho bisogno di grandi reputazione commentare le altre risposte degne qui)
Infatti, risale al primo JavaScript versione Netscape 2.0. (Un altro motivo per non collegarsi all'ECMA-262 è che è incredibilmente poco chiaro e illeggibile, anche per gli standard dei documenti standard!) – bobince
@bobince: Ci vuole un po 'per abituarsi allo stile. :-) –
@bobince: guardando le specifiche ES6 ... beh ... diciamo che ora mi sto appassionando attivamente ai gloriosi giorni di chiarezza delle specifiche ES5. :-) –