我正在尝试在小项目中实现一些常见的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();
然后
(3)?有没有更好的办法?
非常感谢您的帮助,
罗宾
谢谢你明确的答案。 – RobinL 2013-04-28 08:19:28