【发布时间】:2013-04-22 01:17:27
【问题描述】:
我目前正在尝试实现一些常见的 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)?有没有更好的办法?
非常感谢您的帮助,
罗宾
【问题讨论】:
标签: javascript design-patterns closures