检查Javascript命名空间中是否有类类型

时间:2010-01-04 17:30:45

标签: javascript oop class new-operator

我想在尝试通过javascript中的new关键字对其进行实例化之前检查类类型是否可以实例化。

例如

var geocoder = new GClientGeocoder();
如果GClientGeocoder类在命名空间中不可用,则会失败。

这样做的javascript惯用方法是什么?

3 个答案:

答案 0 :(得分:2)

你应该可以这样做:

if(!! GClientEncoder)

或:

if(typeof(GClientEncoder)!==“undefined”)

答案 1 :(得分:2)

在JavaScript中,任何函数都可以是构造函数。这意味着您不能认为该功能是“类”。您可以尝试使用try / catch块检查类型,环绕实例化并检查返回值,但不能更多。即使这样,你也无法预测这个功能不只是new (function(){});

答案 2 :(得分:0)

function classExists(c) { 
    return typeof(c) === "function" && 
           typeof(c.prototype) === "object") ? true : false; 
}