Javascript 用Yabble.js加载一个奇怪的原型

Javascript 用Yabble.js加载一个奇怪的原型,javascript,require,Javascript,Require,我有一个非常奇怪的问题,我必须假设是因为Yabble.js。我以前从未使用过Yabble.js,我现在使用Yabble.js的唯一原因是因为它是我正在使用的库(Gamejs)的依赖项,但我很想了解为什么会发生这种情况,以及这到底是Yabble.js的错,还是Gamejs的错 下面是my main.js的一个高度压缩(并针对一般性进行了修改)版本: var gamejs = require('gamejs'); ... function Character(/*lots of arguments*

我有一个非常奇怪的问题,我必须假设是因为Yabble.js。我以前从未使用过Yabble.js,我现在使用Yabble.js的唯一原因是因为它是我正在使用的库(Gamejs)的依赖项,但我很想了解为什么会发生这种情况,以及这到底是Yabble.js的错,还是Gamejs的错

下面是my main.js的一个高度压缩(并针对一般性进行了修改)版本:

var gamejs = require('gamejs');
...
function Character(/*lots of arguments*/) {
    Character.superConstructor.apply(this, arguments);
    this.somethingtomakeitaprototypeforthisexample = oneofthearguments;
}
gamejs.utils.objects.extend(Character, gamejs.sprite.Sprite);
Character.prototype.draw = function(display){
    display.blit(this.animator.image, this.pos); 
}
... /*Skipping most of the file, irrelevant to the problem*/

function main() {
    maincharacter = new Character(/* appropriate number and types of arguments */);
    ... /*skipping the rest*/
}

gamejs.ready(main);
我已经做了足够的调试,知道它进入
main
函数没有问题,中断发生在调用
字符时。以下是错误消息(来自Chrome控制台):

我已经确定
Character
是未定义的函数。但是,如果我这样定义就绪函数:

gamejs.ready(function(){
    console.log('Character:');
    console.log(Character);
    main(); 
});
正确定义的
Character
的全部内容都会打印出来,但我仍然在
main
中看到错误。因此,我知道
Character
是在调用
main
之前由名称空间定义的

有趣的事实是:我确实有一个解决办法。如果我将
main
的函数原型更改为:

function main(CharacterClass) {...};
然后将就绪功能更改为:

gamejs.ready(function(){ main(Character);  });
并将
main
中的相关行更改为:

function main(CharacterClass) {...};
变量字符=新字符类(…)

它很好用。但这感觉真的很不舒服

所以我的问题不是如何使它工作,因为我已经有了,而是为什么它是一个问题,以及如何使它像预期的那样工作


你有什么想法吗?

你有没有让它发挥作用?如果你能做一个小的测试用例让我试一下,我可以帮上忙。我很确定我最终放弃了,转向了其他的东西,特别是狡猾的JS。