在CoffeeScript中获取类类型

Ale*_*xis 18 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
Run Code Online (Sandbox Code Playgroud)

San*_*dro 28

只需更改==instanceof

if(cat instanceof Cat)
Run Code Online (Sandbox Code Playgroud)


Din*_*ruz 7

如果你想知道特定对象的类型名称(这是我在找到这个问题时正在寻找的),你可以使用语法 {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
Run Code Online (Sandbox Code Playgroud)

哪个会输出

Cat
Dog
Run Code Online (Sandbox Code Playgroud)


Cor*_*hin 5

执行此操作的方法是使用以下任一方法检查对象的类型

instanceof
Run Code Online (Sandbox Code Playgroud)

或者

typeof
Run Code Online (Sandbox Code Playgroud)

IE

if (obj instanceof Awesomeness){
//doSomethingCrazy();
}
Run Code Online (Sandbox Code Playgroud)

就像在 JavaScript 中一样,Coffee Script 不提供对这些函数的任何抽象