如果对象被实例化后如何才能找到它?
class Cat
constructor: (@name) ->
class Dog
constructor: (@name) ->
cat = new Cat "Kitty"
dog = new Dog "Doggy"
if (cat == Cat) <- I want to do something like this
答案 0 :(得分:28)
只需将==
更改为instanceof
if(cat instanceof Cat)
答案 1 :(得分:6)
如果你想知道某个特定对象的类型名称(这是我在找到这个问题时正在寻找的),你可以使用语法{object}.constructor.name
例如
class Cat
constructor: (@name) ->
class Dog
constructor: (@name) ->
cat = new Cat()
dog = new Dog()
console.log cat.constructor.name
console.log dog.constructor.name
将输出
Cat
Dog
答案 2 :(得分:4)
执行此操作的方法是使用
检查对象的类型instanceof
或
typeof
即
if (obj instanceof Awesomeness){
//doSomethingCrazy();
}
就像在JavaScript中一样,Coffee Script不提供对这些函数的任何抽象
答案 3 :(得分:2)
AFAIU,一般解决方案是使用@constructor
- 当您不知道或不想指定类名时很有用。
甚至a discussion关于使@@成为快捷方式。