Esta é uma pergunta realmente básica, apenas para satisfazer minha curiosidade, mas existe uma maneira de fazer algo assim:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
A chave aqui é capaz de usar o NOT! na frente da instância. Normalmente, a maneira como tenho que configurar isso é assim:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
E é um pouco chato ter que criar uma declaração else quando eu simplesmente quero saber se o objeto é um tipo específico.
javascript
instanceof
ryandlf
fonte
fonte
!! obj instanceof Array
retornos falsos (incorretos), enquanto!!(obj instanceof Array)
retorna TRUE (corretas)In this case, the order of precedence is important (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). The ! operator precedes the instanceof operator.
à sua resposta?É a maneira correta de verificar isso - como outros já responderam. As outras duas táticas sugeridas não funcionarão e devem ser entendidas ...
No caso do
!
operador sem suportes.Nesse caso, a ordem de precedência é importante ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). O
!
operador precede oinstanceof
operador. Então,!obj
avaliado para ofalse
primeiro (é equivalente a! Boolean(obj)
); então você está testando sefalse instanceof Array
, o que é obviamente negativo.No caso do
!
operador antes doinstanceof
operador.Este é um erro de sintaxe. Operadores como
!=
um único operador, ao contrário de um NÃO aplicado a um EQUALS. Não existe um operador!instanceof
da mesma maneira que não existe um!<
operador.fonte
É fácil esquecer os parênteses (colchetes) para que você possa criar o hábito de:
ou
Experimente aqui
fonte