2011-05-09 13 views

Respuesta

36

¿Quieres probar si un objeto es descendiente de una clase en particular? Entonces desea la palabra clave instanceof. (No es algo añadido por CoffeeScript, es una parte de JavaScript.) Clases CoffeeScript se configuran de manera que si se escribe

class A 
class B extends A 
class C extends B 

continuación, se cumple lo siguiente:

(new A) instanceof A 
(new B) instanceof B and (new B) instanceof A 
(new C) instanceof C and (new C) instanceof B and (new C) instanceof A 

Además, cualquier objeto se producirá devuelva true para instanceof Object.

Si desea probar la clase específica que un objeto es una instancia de, use .constructor. Por ejemplo,

(new B).constructor is B 

o si desea utilizar una cadena,

(new B).constructor.name is 'B' 
+0

fresca. Eso lo clava :) – flitzwald

+1

Nota especial, Constructor.name no funciona si su código es minified – DrSammyD

0

Se siente mal para mí para crear una instancia de una clase. Nunca se sabe qué parámetros podría esperar el constructor.

Así que lo que ocurrió con es la siguiente:

class A 
class B extends A 

console.log B.__super__ is A.prototype# => true 
+0

Este no es el equivalente de Ruby ' "bla" .is_a? (String)' –

Cuestiones relacionadas