使用命名空间时,Javascript"对象不是构造函数"错误?

Pol*_*878 2 javascript namespaces

我有以下JS代码:

window.Foo = {};
window.Foo.Name1 = function()
{
    function Bar1(param1)
    {
        this.Name = param1;

    }

}


var gMyBar = new Foo.Name1.Bar1("hello world");
alert(gMyBar.Name);
Run Code Online (Sandbox Code Playgroud)

我在Firefox错误控制台中收到错误"Foo.Name1.Bar1不是构造函数"...给出了什么?

bch*_*rry 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
Run Code Online (Sandbox Code Playgroud)