Javascript访问父属性

时间:2013-02-13 16:13:45

标签: javascript

如何获得父选项?

我想访问全局myObject选项

var myObject = {    
  method: function(){
    this.options = {};
  },      
  property: {    
    propertyMethod: function(){
       alert(this.options);
    }     
  }    
}    
myObject.method();
myObject.property.propertyMethod();

2 个答案:

答案 0 :(得分:4)

如果您的意思是,您希望从myObject内访问options的{​​{1}}属性,除非利用{{1}这一事实,否则无法做到这一点}是property.propertyMethod变量的闭包,例如:

propertyMethod

......这通常不是一个好主意。 :-)相反,您可能希望以不同方式设计对象。例如:

myObject

这样,您正在使用函数调用的执行上下文。但如果你打算这样做,也许可以把它带到下一步:

var myObject = {    
  method: function(){
    this.options = {};
  },      
  property: {    
    propertyMethod: function(){
       alert(myObject.options); // <=== Change is here
    }     
  }    
}    
myObject.method();
myObject.property.propertyMethod();

...所以你可以制作不止一个。甚至可以构建一个真正的构造函数:

var myObject = (function() {
  var obj = {
    method: function(){
      obj.options = {};
    },      
    property: {    
      propertyMethod: function(){
         alert(obj.options);
      }     
    }    
  };
  return obj;
})();
myObject.method();
myObject.property.propertyMethod();

...虽然因为你没有利用原型,所以没有太多理由让它成为构造函数。

答案 1 :(得分:1)

您可以使用callthis绑定到myObject

myObject.property.propertyMethod.call(myObject);