我正在尝试在我的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;
};
答案 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>