如何从二级对象(sub3)访问主对象的属性或方法。如果可能的话,我想避免解决方案链返回此。
Obj = function () {};
Obj.prototype = {
name: 'name',
main: function(){
console.log(this.name);
},
subobject: {
sub2: function () {
console.log(this);
},
sub3: function () {
console.log(this.name); // How access to Obj.name ??
}
}
}
o = new Obj();
o.main(); // return name
o.subobject.sub2(); // return subobject
o.subobject.sub3(); // return undefined
最佳答案
使用当前的语法,您不能。因为对于sub2
和sub3
,this
变量是Obj.prototype.subobject
。
您有多种选择:
显而易见的一个:不要使用主题。
在构造函数中创建subobject
,sub2
和sub3
Obj = function() {
var self = this;
this.subobject = {
sub1: function() { console.log(self); }
}
}
在每个呼叫中使用
bind
:o.subobject.sub2.bind(o)();