如何从子对象二级(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
答案 0 :(得分:2)
使用您当前的语法,您无法做到。因为对于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)();