Проверка, доступен ли тип класса в пространстве имен Javascript - PullRequest
0 голосов
/ 04 января 2010

Я хотел бы проверить, является ли тип класса инстанцируемым, прежде чем пытаться создать его с помощью нового ключевого слова в javascript.

Например

var geocoder = new GClientGeocoder();
потерпит неудачу, если класс GClientGeocoder недоступен в пространстве имен.

Какой javascript идиоматический способ сделать это?

Ответы [ 3 ]

2 голосов
/ 04 января 2010

Вы должны быть в состоянии сделать:

if (!! GClientEncoder)

или

if (typeof (GClientEncoder)! == "undefined")

2 голосов
/ 04 января 2010

В JavaScript любая функция может быть конструктором. Это означает, что вы не можете предполагать, что функция является «Классом». Вы можете попробовать проверить тип, окружить инстанцирование блоком try / catch и проверить возвращаемое значение, но не более того. Даже тогда вы не можете предсказать, что функция не просто new (function(){});

0 голосов
/ 04 января 2010
function classExists(c) { 
    return typeof(c) === "function" && 
           typeof(c.prototype) === "object") ? true : false; 
}
...