我有以下JS代码:
window.Foo = {};
window.Foo.Name1 = function()
{
function Bar1(param1)
{
this.Name = param1;
}
}
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name);
我在Firefox错误控制台中收到错误“Foo.Name1.Bar1不是构造函数”...给出了什么?
答案 0 :(得分:8)
你对JavaScript中的“命名空间”感到困惑。 JavaScript没有名称空间,只有对象和函数。您已在函数Bar1
的闭包中声明Name1
为本地函数。它不是Name
的成员。我不确定你在这里会发生什么,但我认为就是这样:
var Foo = {
Name1: {
Bar1: function(param1) {
this.Name = param1;
}
}
};
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name); // hello world
答案 1 :(得分:3)
问题是Bar1
是一个局部函数,仅适用于Name1
函数的范围。
如果您想访问Bar1
,可以Name1
另一个命名空间级别:
window.Foo = {};
window.Foo.Name1 = {
Bar1: function (param1) {
this.Name = param1;
}
};
var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name); // "hello world"