【发布时间】:2013-09-19 09:11:57
【问题描述】:
我最近一直在我的 Javascript 中使用 Revealing Module pattern 来帮助构建我的代码,并且一切顺利。但是,我对这段代码 sn-p 有点困惑:
function vm() {
var pub = function () {
alert("from pub: " + this);
pri();
},
pri = function () {
alert("from pri: " + this);
};
return {
pub: pub,
pri: pri
};
}
var it = new vm();
it.pub();
it.pri();
当我直接调用pub() 和pri() 时,this 指的是vm 的当前实例。但是,当我从pub() 中调用pri() 时,突然this 已恢复为引用全局窗口对象。我认为揭示模块模式的目标之一是消除this 的问题,但似乎在从另一个函数中调用一个函数时,我失去了this 的值。
如果有办法让它工作而不必传递对当前对象的引用,有人知道为什么会这样吗?
【问题讨论】:
-
没有。显示模块模式的目标始终是且仅是提供私有范围。顺便说一句,您甚至不使用 RMP,而是使用构造方法(尽管当您明确地
return处理对象时,new没有帮助)。
标签: javascript revealing-module-pattern