我如何获得家长选项?
我想访问全局 myObject 选项
var myObject = {
method: function(){
this.options = {};
},
property: {
propertyMethod: function(){
alert(this.options);
}
}
}
myObject.method();
myObject.property.propertyMethod();
Run Code Online (Sandbox Code Playgroud)
如果你的意思是,你想从内部访问myObject的属性,那么除了利用变量的闭包这一事实之外,没有办法做到这一点,例如:optionsproperty.propertyMethodpropertyMethodmyObject
var myObject = {
method: function(){
this.options = {};
},
property: {
propertyMethod: function(){
alert(myObject.options); // <=== Change is here
}
}
}
myObject.method();
myObject.property.propertyMethod();
Run Code Online (Sandbox Code Playgroud)
...这通常不是一个好主意。:-) 相反,您可能想要以不同的方式设计您的对象。例如:
var myObject = (function() {
var obj = {
method: function(){
obj.options = {};
},
property: {
propertyMethod: function(){
alert(obj.options);
}
}
};
return obj;
})();
myObject.method();
myObject.property.propertyMethod();
Run Code Online (Sandbox Code Playgroud)
这样,您就可以使用函数调用的执行上下文。但如果您打算这样做,也许可以进行下一步:
function makeObject() {
var obj = {
method: function(){
obj.options = {};
},
property: {
propertyMethod: function(){
alert(obj.options);
}
}
};
return obj;
}
var myObject = makeObject();
myObject.method();
myObject.property.propertyMethod();
Run Code Online (Sandbox Code Playgroud)
...这样你就可以制作多个。或者甚至创建一个真正的构造函数:
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();
Run Code Online (Sandbox Code Playgroud)
...虽然由于您没有利用原型,但没有太多理由将其设为构造函数。
| 归档时间: |
|
| 查看次数: |
5383 次 |
| 最近记录: |