所有javascript对象成员创建相同吗?

时间:2014-10-02 22:03:58

标签: javascript jquery-ui

对于我的网站jquery和jquery.ui加载我尝试了以下实验。

如果在Chrome控制台中输入...

jQuery.ui
>Object {version: "1.9.1", keyCode: Object, ie: false, ie6: false, plugin: Object…}

但是,如果我要求它的类型我得到..

typeof this["jQuery.ui"]
>"undefined"

有人可以解释为什么会这样吗? 我将如何判断jQuery.ui是否存在?....如果" jQuery.ui" name包含在字符串变量中,我如何使用该变量来检查existance ......例如。

var myvar = "jQuery.ui";
typeof this[myvar];  

2 个答案:

答案 0 :(得分:2)

当您键入jQuery.ui时,您正在访问全局变量jQuery,然后向该对象询问名为ui的属性。

this["jQuery.ui"]向全局对象询问名为"jQuery.ui"的属性。这是完全不同的事情。

  

我将如何判断jQuery.ui是否存在?

最简单的是:

if (jQuery && jQuery.ui) {
  // jQuery.ui exists
}
  

如果" jQuery.ui" name包含在字符串变量中,我将如何使用该变量来检查存在

不要这样做。不要将变量名称存储为字符串。这是个坏主意。特别是如果你想检查全局变量。

答案 1 :(得分:1)

  

如果" jQuery.ui" name包含在字符串变量中,我将如何使用该变量来检查存在

如果您确实想要完成此操作,请尝试以下代码:



function existsOn(prop, obj){
    var parts = prop.split('.');
    for(var i=0; i < parts.length; i++){
        obj = obj[parts[i]];
        if(!obj){
            return false;
        }
    }
    if(obj){
        return true;
    }
    return false;
}
var str = "jQuery.ui";
alert("Exists: " + existsOn(str, window));
&#13;
&#13;
&#13;