Получить тип класса в CoffeeScript - PullRequest
18 голосов
/ 02 марта 2012

Как я могу найти этот класс объекта после его создания?

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 ]

28 голосов
/ 02 марта 2012

Просто измените == на instanceof

if(cat instanceof Cat)
6 голосов
/ 15 декабря 2014

Если вы хотите узнать имя типа определенного объекта (именно это я и искал, когда нашел этот вопрос), вы можете использовать синтаксис {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
4 голосов
/ 02 марта 2012

Способ сделать это - проверить тип объекта, используя

instanceof

или

typeof

т.е.

if (obj instanceof Awesomeness){
//doSomethingCrazy();
}

Так же, как вJavaScript, Coffee Script не предоставляет никаких абстракций над этими функциями

2 голосов
/ 04 августа 2013

AFAIU, общее решение будет использовать @constructor - Полезно, когда вы не знаете или не хотите указывать имя класса.

Было даже обсуждение относительно создания @@ ярлыка для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...