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 Array
devuelve 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 alinstanceof
operador. Entonces,!obj
evaluado afalse
primero (es equivalente a! Boolean(obj)
); entonces estás probando sifalse instanceof Array
, lo que obviamente es negativo.En el caso del
!
operador antes que elinstanceof
operador.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!instanceof
de 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