La instanceof
parola 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 instanceof
alcune 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
è TRUE
nel nodo e nei browser moderni
({}) instanceof Object
tornerà true
. In effetti il codice che hai scritto ti darà un errore.