对象构造函数内的对象构造函数

时间:2013-11-30 20:03:53

标签: javascript oop

假设我有以下脚本:

var A = function() {
  this.b = "asdf";
  this.c = function() {
    this.source = "asd";
    this.data = function() {
      var response;
      $.getJSON(this.source, function(data) {
        response = data;
      });
      return response;
    };
  };
};

我制作这些闭包的原因是我在A中有其他对象和变量,这使得面向对象的应用程序成为可能。我对这个剧本有些怀疑:

  • 我如何从A.b方法中引用A.cthis指的是A.c个实例,而不是A

注意:目的是在new A()上生成如下对象:

{
  b: "asdf",
  c: {
    source: "qwerty",
    data: {
      jsondata1: "jsonvalue1",
      jsondata2: 3,
      // ...
    }
  }
}

但我知道instance.c仍然是构造函数,我不知道如何将它作为另一个内的对象。

1 个答案:

答案 0 :(得分:1)

这应该有效

var A = function() {
    var me = this; //<-- to let you refer to b inside the c function
    me.b = "asdf";
    me.c = new function() { // <-- added new here
        this.source = me.b + 'abc';
        this.data = function() {
            var response;
            $.getJSON(this.source, function(data) {
                response = data;
            });
            return response;
        };
    };
};

a = new A();

a.b返回“asdf”,a.c.source返回“asdfabc”。 a.c.data仍然是功能。