我的代码中需要一个Set对象类型。但在某些浏览器中,对象类型already exists和我的类和标准是成员兼容的。只有在浏览器脚本宿主中不存在我的类时才能声明我的类?
例如:
if (typeof Set === 'undefined' ) {
function Set() {
// object initialization code ...
}
}
它不起作用,因为内部Set函数对象不是全局的。
答案 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 = ...