Javascript对象请帮忙

时间:2010-11-26 17:52:25

标签: javascript

我正在尝试在我的javascript命名空间中创建一个名为$browser的对象,该对象返回基于特征检测的Internet Explorer版本号。

我无法在我的对象中调用函数ieVersion,并且收到错误ieVersion is not defined

我可以在$ $browser.ieVersion()对象之外调用browser但不在。{/ p>之内

我希望能做的就是说..

if($browser.ie6){
  // run my specific code...
}

任何指针.....

更新....我试图遵循卡萨布兰卡的建议,并更新了代码,以反映我对他的更改的解释......我现在在Expected ':'处出现错误Namespace.$browser

我的代码......

// Namespace the functions to remove possibility of conflict.
var Namespace = {

    /// <summary>
    /// The browser object allows detection of ie versions.
    /// </summary>
    $browser: {

        ie6: Namespace.$browser.ieVersion() === 6,

        /// <summary>
        /// Uses feature detection to return the internet explorer browser number.
        /// </summary>
        ieVersion: function () {
            var $version = 0;
            // The browser is IE 6 - 8.
            if (!jQuery.support.leadingWhitespace) {

                // IE 6 & 7.
                if (!jQuery.support.boxModel) {
                    if (!jQuery.support.opacity && !window.XMLHttpRequest) {
                        $version = 6;
                    }
                    else {
                        $version = 7;
                    }
                }
                else {
                    $version = 8;
                }
            }
            return $version;
        }
    },

 Namespace.$browser.ie6 = Namespace.$browser.ieVersion() === 6;    

};

2 个答案:

答案 0 :(得分:2)

这一行存在两个问题:

ie6: ieVersion() === 6

首先,ieVersion本身是指全局(而非功能级别)命名空间。您需要将其完全限定为Namespace.$browser.ieVersion

其次,ieVersion尚未定义。只有在创建整个对象后才可用。您不能在同一个对象文字中引用另一个函数。因此,只能在定义完整个对象后初始化ie6属性。

将此行放在Namespace声明

下面
Namespace.$browser.ie6 = Namespace.$browser.ieVersion() === 6;

答案 1 :(得分:0)

它告诉你这一行:

Namespace.$browser.ie6 = Namespace.$browser.ieVersion() === 6;  

不是您的浏览器对象的有效属性,这是您放置它的位置。它应该有:而不是=(尽管语法仍然无效,因为您无法命名属性名称),或者它应该放在对象声明之外。

此外,您仍然遇到与代码中前面提到的@casablanca完全相同的问题 - 即使您在ie6属性中对代码进行命名,但它仍然引用了尚不存在的函数。 / p>