La instanceofparola chiave in JavaScript può essere abbastanza confusa quando viene incontrata per la prima volta, poiché le persone tendono a pensare che JavaScript non sia un linguaggio di programmazione orientato agli oggetti.
- Che cos'è?
- Quali problemi risolve?
- Quando è appropriato e quando no?
"foo" instanceof String=> false, 1 instanceof Number=> false, {} instanceof Object=> false. Che cosa?!
"foo" instanceof String => falseè corretto, perché typeof "foo" == 'string'. new String("foo") instanceof String => true, perché typeof String == 'function'- dovresti considerare la funzione come una classe (definizione di classe). Le variabili diventano instanceofalcune function(classe) quando le si assegna come var v = new AnythingWhatTypeofEqualsFunction(). Lo stesso vale per 1. typeof 1 == 'number'- 'numero' non è 'funzione' :) Avanti - {} instanceof Objectè TRUEnel nodo e nei browser moderni
({}) instanceof Objecttornerà true. In effetti il codice che hai scritto ti darà un errore.