2014-01-21 63 views
1

我需要在我的代码中设置对象类型。但在某些浏览器中,这样的对象类型already exists和我的类和标准是由成员兼容的。只有在浏览器脚本宿主中不存在的情况下,我如何才能声明我的类?如何声明新的JavaScript对象类型,如果它尚未声明

例如:

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

它不工作,因为内部设置函数对象不是全局。

+0

除非你添加功能的浏览器,错过它,我不会创建一个已经存在的对象 – Nzall

回答

0

像这样的东西应该工作。

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

如果我的代码不工作在浏览器中,该怎么做?例如在Windows Script Host中? – 23W

1

最可靠的方法可能是使用这样的:

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

在机会window.Set定义,但其价值是undefined,这将正确地看到,它已被定义,不像检查该值,或使用typeof

如果您需要在情况下运行,其中window不是全局对象,你可以在你的脚本最上方加入这一行:

var global = this; 

然后你可以使用global而不是window

+0

如何在“if”语句中定义全局对象? – 23W

+0

@ 23W看我的编辑。 –

+0

您可以为Windows Script Host编写示例(不适用于浏览器,即窗口对象不存在)? – 23W

0

只需使用typeof以确定它是否是undefined

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

一个简单的测试感实性就足够了:

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