假设我有以下脚本:
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.c
? this
指的是A.c
个实例,而不是A
。注意:目的是在new A()
上生成如下对象:
{
b: "asdf",
c: {
source: "qwerty",
data: {
jsondata1: "jsonvalue1",
jsondata2: 3,
// ...
}
}
}
但我知道instance.c
仍然是构造函数,我不知道如何将它作为另一个内的对象。
答案 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
仍然是功能。