1

我有这个代码:

if(window.NS1.foob)

我想检查一下 fob 是否存在。

但是,我收到此错误

NS1 id undefined.

问题是我需要测试是否存在 foob,而不是 NS1。

4

4 回答 4

8

一种方法是:

if(window.NS1 && window.NS1.foob)
于 2013-07-24T19:59:43.363 回答
4

不幸的是,您必须先检查 NS1。Window 是全局对象,您不需要指定它,因为它是隐式的。

if (window.NS1 && window.NS1.foob)

在检查 foob 之前。

这应该可以解决您的问题。

于 2013-07-24T19:59:44.310 回答
3

There can be many ways, following are two:

if(window.NS1 && window.NS1.foob){
    //your code
}

.

try{
    if(window.NS1.foob) {
        //your code
    }
} catch (err) {
    if(err instanceof TypeError) {
        //your code
    } else {
       throw err;
    }
}

Second one should be preferred, if NS1 not being present is an exceptional condition (i.e., won't occur frequently) and also if you want to handle it in a different way (compared to when foob is not present).

于 2013-07-24T20:22:10.900 回答
-1

这对我有用。

var NS1 = window.NS1 = function(){};
NS1.foob = "bar";
NS1.hasOwnProperty('foob') ? alert('Yep') : alert('Nope');

编辑:不知道为什么我被否决了,但也许我误解了这个问题。(虽然我显然有点过于复杂了)

于 2013-07-24T20:03:53.917 回答