Подтвердить что ты не робот

Каков самый простой способ проверить членство в классе в coffeescript?

Я ищу эквивалент Ruby "blah".is_a?(String) Objective-C [@"blah" isKindOfClass:[NSString class]]

4b9b3361

Ответ 1

Вы хотите проверить, сходит ли объект из определенного класса? Затем вам понадобится ключевое слово instanceof. (Это не что-то добавленное CoffeeScript, это часть JavaScript.) Классы CoffeeScript настроены так, что если вы пишете

class A
class B extends A
class C extends B

то верно следующее:

(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

Кроме того, любой объект вернет true для instanceof Object.

Если вы хотите протестировать конкретный класс, в котором объект является экземпляром, используйте .constructor. Например,

(new B).constructor is B

или если вы хотите использовать строку,

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

Ответ 2

Мне кажется неправильным создать экземпляр класса. Вы никогда не знаете, какие параметры может ожидать конструктор.

Так что я придумал следующее:

class A
class B extends A

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