在CoffeeScript中获取类类型

时间:2012-03-01 22:36:46

标签: coffeescript

如果对象被实例化后如何才能找到它?

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

4 个答案:

答案 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关于使@@成为快捷方式。