Esta es una pregunta realmente básica para satisfacer mi curiosidad, pero hay una manera de hacer algo como esto:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
¡La clave aquí es poder usar el NOT! delante de la instancia. Por lo general, la forma en que tengo que configurar esto es así:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
Y es un poco molesto tener que crear una declaración else cuando simplemente quiero saber si el objeto es de un tipo específico.
javascript
instanceof
ryandlf
fuente
fuente

!! obj instanceof Arraydevuelve falso (incorrecto) mientras!!(obj instanceof Array)devuelve verdadero (correcto)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.a su respuesta?Es la forma correcta de verificar esto, ya que otros ya han respondido. Las otras dos tácticas sugeridas no funcionarán y deben entenderse ...
En el caso del
!operador sin corchetes.En este caso, el orden de precedencia es importante ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). El
!operador precede alinstanceofoperador. Entonces,!objevaluado afalseprimero (es equivalente a! Boolean(obj)); entonces estás probando sifalse instanceof Array, lo que obviamente es negativo.En el caso del
!operador antes que elinstanceofoperador.Este es un error de sintaxis. Operadores como
!=son un solo operador, a diferencia de un NO aplicado a un EQUALS. No existe tal operador como!instanceofde la misma manera que no hay!<operador.fuente
Es fácil olvidar el paréntesis (paréntesis) para que pueda hacer el hábito de hacer:
o
Pruébalo aquí
fuente