代码之家  ›  专栏  ›  技术社区  ›  DigitalZebra

使用名称空间时出现Javascript“Object not a constructor”错误?

  •  2
  • DigitalZebra  · 技术社区  · 15 年前

    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不是构造函数”。。。有什么好处?

    2 回复  |  直到 15 年前
        1
  •  8
  •   bcherry    15 年前

    你对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
    
        2
  •  3
  •   Christian C. Salvadó    15 年前

    问题是 Bar1 Name1 功能。

    如果你想访问 ,你可以 姓名1 另一个 命名空间级别

    window.Foo = {};
    window.Foo.Name1 = {
      Bar1: function (param1) {
        this.Name = param1;
      }
    };
    
    var gMyBar = new Foo.Name1.Bar1("hello world");
    alert(gMyBar.Name); // "hello world"
    
    推荐文章