如何获得家长选项?
我想访问全局 myObject 选项
var myObject = {
method: function(){
this.options = {};
},
property: {
propertyMethod: function(){
alert(this.options);
}
}
}
myObject.method();
myObject.property.propertyMethod();
最佳答案
如果你的意思是,你想从 property.propertyMethod
中访问 myObject
的 options
属性,除了利用 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();
这样,您就可以使用函数调用的执行上下文。但如果您打算这样做,也许可以进入下一步:
function makeObject() {
var obj = {
method: function(){
obj.options = {};
},
property: {
propertyMethod: function(){
alert(obj.options);
}
}
};
return obj;
}
var myObject = makeObject();
myObject.method();
myObject.property.propertyMethod();
...所以您可以制作多个。或者甚至制作一个真正的构造函数:
function MyObject() {
var obj = this;
obj.method = function(){
obj.options = {};
};
obj.property = {
propertyMethod: function(){
alert(obj.options);
}
};
}
var myObject = new MyObject();
myObject.method();
myObject.property.propertyMethod();
...虽然因为您没有利用原型(prototype),所以没有太多理由让它成为构造函数。
关于Javascript 访问父属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14857901/