如何在尚未声明的情况下声明新的javascript对象类型

时间:2014-01-21 14:00:01

标签: javascript class

我的代码中需要一个Set对象类型。但在某些浏览器中,对象类型already exists和我的类和标准是成员兼容的。只有在浏览器脚本宿主中不存在我的类时才能声明我的类?

例如:

if (typeof Set === 'undefined' ) {
      function Set() {
          // object initialization code ...
      }
}

它不起作用,因为内部Set函数对象不是全局的。

4 个答案:

答案 0 :(得分:1)

最强大的方法可能就是使用它:

if (!("Set" in window))
{
    window.Set = function ()
    {
        ...
    }
}

如果定义window.Set,但其值为undefined,则会正确地看到它已被定义,与检查值或使用typeof不同。

如果您需要在window不是全局对象的情况下运行,可以在脚本的最顶部插入此行:

var global = this;

然后,您可以使用global代替window

答案 1 :(得分:0)

这样的事情应该有效。

if (window.Set === undefined) {
    window.Set = MySet;
}

答案 2 :(得分:0)

只需使用typeof来确定它是undefined

if (typeof window.Set === 'undefined')
    ...

答案 3 :(得分:0)

简单的真实性测试就足够了:

if (!window.Set) {
    window.Set = ...