我目前正在尝试在小项目中实现一些常见的 JS 概念,以更好地了解如何使用它们。
我一直在做一个简单的游戏,试图理解和使用模块模式和闭包。我正在使用 Stoyan Stefanov 的“模式”书中的模块模式。
我正在努力理解如何最好地混合模块和闭包。
我想知道我是否以合理的方式组织以下代码?如果是这样,我的问题是:修改代码以便$(function(){})
我可以访问该update()
函数的最佳方法是什么?
MYAPP.utilities = (function() {
return {
fn1: function(lives) {
//do stuff
}
}
})();
MYAPP.game = (function() {
//dependencies
utils = MYAPP.utilities
return {
startGame: function() {
//initialisation code
//game state, stored in closure
var lives = 3;
var victoryPoints = 0;
function update(){
utils.fn1(lives);
//do other stuff
}
}
}
})();
$(function(){
MYAPP.game.startGame();
//Want to do this, but it won't work
//because I don't have access to update
$('#button').on('click',MYAPP.game.update)
});
我想出了几个可行的选择,但我想知道它们是否是好的做法,以及最好的选择是什么。
选项:
(1)$('#button').on('click', ...)
作为 startGame 初始化代码的一部分进行绑定。
(2) 将update()
函数赋值给一个变量,并从startGame函数中返回这个变量,所以
$(function(){})
我们可以有
updatefn = MYAPP.game.startGame();
然后
$('#button').on('click',MYAPP.game.update)
(3)? 有没有更好的办法?
非常感谢您的帮助,
罗宾