如何获得父选项?
我想访问全局myObject选项
var myObject = {
method: function(){
this.options = {};
},
property: {
propertyMethod: function(){
alert(this.options);
}
}
}
myObject.method();
myObject.property.propertyMethod();
答案 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)
您可以使用call
将this
绑定到myObject
myObject.property.propertyMethod.call(myObject);