在JavaScript中从子对象访问它

时间:2016-05-30 13:57:32

标签: javascript

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

1 个答案:

答案 0 :(得分:2)

使用您当前的语法,您无法做到。因为对于sub2sub3this变量为Obj.prototype.subobject

您有多种选择:

  • 显而易见的一个:不要使用子对象。
  • 在构造函数中创建subobjectsub2sub3

    Obj = function() {
        var self = this;
    
        this.subobject = {
            sub1: function() { console.log(self); }
        }
    }
    
  • 每次通话时使用bind

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