如何从二级对象(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

最佳答案

使用当前的语法,您不能。因为对于sub2sub3this变量是Obj.prototype.subobject

您有多种选择:


显而易见的一个:不要使用主题。
在构造函数中创建subobjectsub2sub3

Obj = function() {
    var self = this;

    this.subobject = {
        sub1: function() { console.log(self); }
    }
}

在每个呼叫中​​使用bind

o.subobject.sub2.bind(o)();

09-25 15:17