var a = {
b: {
c: 1
},
d: this.b.c
};
错误:
this.b is undefined
我怎样才能打电话给b.c?
答案 0 :(得分:5)
var a = {
b: {
c: 1
}
};
a.d = a.b.c;
将是唯一的方法。 this.b.c
在您构建a
对象的范围内执行,而不是在对象本身内执行;因此this
等于window
和window.b == undefined
答案 1 :(得分:1)
虽然Matt告诉你只有一种方法,但这可能是另一种选择:
var a = {
b: {c: 1},
d: function(){return this.b.c;}
}
alert(a.d()); //=> 1
或
var a = {
b: {c: 1},
d: function(){if (this.d instanceof Function) {this.d = this.b.c;}}
}
a.d();
alert(a.d); //=> 1
或执行匿名函数:
var a = function(){
var obj ={b: {c: 1}}
obj.d = obj.b.c;
return obj;
}();
alert(a.d); //=> 1