【发布时间】:2011-03-13 20:53:16
【问题描述】:
// i = inner, o = outer, f=function, a=attribute
var singleton = function() {
var iF = function() {
return this.oA; // returns undefined
}
return {
oF: function() {
this.oA = true;
return iF();
},
oA: false
};
}();
singleton.oF();
如果单例是class(如在基于类的语言中),我是否应该能够通过this.oA 访问oA?
我发现从iF 访问oA 的唯一方法是:
return singleton.oA; // returns true (as it should)
我不知道为什么,但是通过singleton 基础对象访问oA 让我感觉有点……脏。我错过了什么? this.oA 实际上指的是什么(从范围的角度来看)?
【问题讨论】:
-
您遇到的问题是
this在这种情况下指的是window,但我不确定您在这里究竟想要什么......
标签: javascript singleton scope closures