1

Используя парадигму наследования наследования Google Closure, как я могу узнать, что такое имя класса, или как я могу иначе идентифицировать класс, поскольку object.constructor.name возвращает "" и является неправильным при его минировании?Как определить класс в сокращенном коде Google Closure?

Целью является выполнение кода, зависящего от реализации интерфейса или унаследованного класса. Этот код внутри decorator класса, который простирается Animal, тоже:

var object = XXX; // of @type {Animal} 
switch (object.constructor.name) { 
    case 'Dog': 
     //... 
     break; 
    case 'Cat': 
     //... 
     break; 
} 
+0

Мое настоящее решение состоит в том, чтобы добавить мой собственный «идентификатор» к каждому классу. –

ответ

3

Я думаю, что это будет работать:

switch (object.constructor) { 
case Dog: 
    ... 
case Cat: 
    ... 
} 

или (немного уродливее, так как вы не можете использовать switch)

if (object instanceof Dog) { 
    ... 
} else if (object instanceof Cat) { 
    ... 
} else if ...