Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在尚未声明的情况下声明新的javascript对象类型_Javascript_Class - Fatal编程技术网

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

如何仅在尚未声明的情况下声明新的javascript对象类型,javascript,class,Javascript,Class,我需要在代码中设置对象类型。但在某些浏览器中,成员可以兼容对象类型和my类及标准。如何仅在浏览器脚本主机中不存在类时才能声明该类 例如: if (typeof Set === 'undefined' ) { function Set() { // object initialization code ... } } 它不起作用,因为内部集合函数对象不是全局的。类似的东西应该可以工作 if (window.Set === undefined) {

我需要在代码中设置对象类型。但在某些浏览器中,成员可以兼容对象类型和my类及标准。如何仅在浏览器脚本主机中不存在类时才能声明该类

例如:

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

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

类似的东西应该可以工作

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

最可靠的方法可能是使用以下方法:

if (!("Set" in window))
{
    window.Set = function ()
    {
        ...
    }
}
如果定义了
window.Set
,但其值为
undefined
,这将正确地看到它已被定义,而不是检查值或使用
typeof

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

var global = this;
然后,您可以使用
全局
而不是
窗口

来确定它是否为
未定义

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

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

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

如何在“if”语句中定义全局对象?能否为Windows脚本主机编写示例(不适用于浏览器,即窗口对象不存在)?谢谢,您的代码运行良好!如果我的代码不在浏览器中工作,该怎么做?例如,在Windows Script Host?中,除非您向浏览器添加缺少的功能,否则我不会创建某种程度上已经存在的对象