我最近一直在我的 Javascript 中使用Revealing Module 模式来帮助构建我的代码,并且一切都很顺利。但是,我对这段代码有点困惑:
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()
and时pri()
,this
指的是vm
. 但是,当我pri()
从内部调用时pub()
突然this
又恢复到引用全局窗口对象。我认为揭示模块模式的目标之一是消除问题,this
但似乎当从另一个函数中调用一个函数时,我失去了this
.
有谁知道为什么会这样,如果有办法让它工作而不必传递对当前对象的引用?