Javascript RequireJS某些(并非所有)函数未定义
我不确定有没有人能帮上忙,但事情是这样的。我目前正在重构一个使用RequireJS编写的游戏(一个优秀的基于组件的游戏引擎)。一切都进行得很顺利,但突然我遇到了困难。我构建了一个模块,在其中我定义了一个小的狡猾的组件,它基本上只是事件侦听的瓶颈。在其中一个回调中,我调用了本地模块中定义的几个函数。我在很多场合下都在RequireJS中使用过这种模式,它对我一直都很有效。出于某种原因,在这种情况下,有些函数是未定义的。不是所有的。只是一些。下面是一些代码: 组成部分:Javascript RequireJS某些(并非所有)函数未定义,javascript,requirejs,craftyjs,Javascript,Requirejs,Craftyjs,我不确定有没有人能帮上忙,但事情是这样的。我目前正在重构一个使用RequireJS编写的游戏(一个优秀的基于组件的游戏引擎)。一切都进行得很顺利,但突然我遇到了困难。我构建了一个模块,在其中我定义了一个小的狡猾的组件,它基本上只是事件侦听的瓶颈。在其中一个回调中,我调用了本地模块中定义的几个函数。我在很多场合下都在RequireJS中使用过这种模式,它对我一直都很有效。出于某种原因,在这种情况下,有些函数是未定义的。不是所有的。只是一些。下面是一些代码: 组成部分: Crafty.c("Turn
Crafty.c("TurnStateMachineObserver", {
startListening: function() {
...
this.bind(POST+PHASE_CHANGE, function(e) {
// this is called after the phase change has already been
// applied. now, switch to the next phase, if appropriate.
var curPhase = currentPhase();
var nextPhase = nextPhase();
if (nextPhase === PHASE_TURN_START)
_triggerPlayerChange(nextPlayer());
else if (curPhase !== PHASE_MAIN)
_triggerPhaseChange(nextPhase());
})
.bind(POST+RESET, function(e) {
reset();
});
},
...
});
对于那些不熟悉Crafty的人,Crafty.c
会创建一个组件,稍后可以实例化该组件。作为第二个参数传递的对象文字将附加(扩展?)到任何对象,该对象包括TurnStateMachineObserver
作为其组件之一(即使用Crafty.e(“TurnStateMachineObserver”)
)
组件内部使用的函数稍后在同一文件中定义(整个文件包装在define()
调用中):
在
init
函数(模块返回)中,定义了nextPhase()
,但是如果我进入\u observer.startListening()
,它不是,尽管currentPhase()
是。啊!我把剩下的头发都拔出来了。让我感到困惑的是,这些函数是兄弟函数。如何定义更高范围内的某些函数而不定义其他函数 哇,笨蛋。显然,问题是我用变量覆盖了函数。当我把它改成
...
var curPhaseVal = currentPhase();
var nextPhaseVal = nextPhase();
...
突然间,一切正常。这本应该是一个不需要动脑筋的问题,但我还是花了一个星期才找到。好吧,回去工作吧 哇,笨蛋。显然,问题是我用变量覆盖了函数。当我把它改成
...
var curPhaseVal = currentPhase();
var nextPhaseVal = nextPhase();
...
突然间,一切正常。这本应该是一个不需要动脑筋的问题,但我还是花了一个星期才找到。好吧,回去工作吧
...
var curPhaseVal = currentPhase();
var nextPhaseVal = nextPhase();
...