In breve: sembra essere dipendente dal browser.
Più dettagliato: Ho trovato questo test JSPerf: http://jsperf.com/instanceof-performance/2 confrontando un'istanza JavaScript di controllo rispetto a un controllo booleano per una proprietà esistente/mancante in un oggetto.
Il risultato complessivo (attenzione al piccolo numero di campioni) è che in Chrome entrambi i metodi sono uguali con vantaggi per instanceof. In FF, tuttavia, il controllo della proprietà è più veloce dell'operatore instanceof. Aggiornamento Apr 2017: come ha sottolineato @ngryman: in entrambe le versioni recenti di FF e Chrome, il controllo delle proprietà sembra molto più rapido di instenaceof.
Sarebbe interessante estendere tale test con un caso come verificare se un confronto di stringhe come obj.type == 'MyClass'
ha una forte influenza sul soggetto.
fonte
2013-02-04 20:12:37
Stai cercando qualcosa di definitivo, vedo. Ma "problema di prestazioni" non è una domanda definitiva. Al contrario, è molto vago. Inoltre, le domande sulle prestazioni devono essere poste nel modulo "A o B richiede più memoria/tempo di esecuzione/altra quantità misurabile", dove A e B sono cose diverse che producono lo stesso risultato. Quindi dovresti confrontare l'operatore instanceof con qualcos'altro che fa la stessa cosa. –
Hmm, la mia domanda non è stata inquadrata nel modo giusto. –
Suppongo che potresti eseguire un benchmark che ti diceva che l'operatore instanceof ha impiegato 7 microsecondi (il numero scelto a caso solo per esempio) da eseguire. Ma allora dovresti chiederti cosa significhi nel contesto di un codice reale. –