我是 JS 设计模式的新手,我想知道我是否做得对。我正在开发一个 HTML5 Go 游戏。所以我很自然地将我的代码分成文件,每个文件都实现了模块模式。例如,这是板(goban)文件:
var goban = (function() {
var m_canvas = null,
m_ctx = null,
m_canvas_height = null,
m_canvas_width = null;
var drawLines = function(line_step, line_limit) {
...
};
var drawStars = function(first_star_coords, distance_btwn_stars, star_size) {
...
};
return {
init: function(canvas, ctx) {
m_canvas = canvas;
m_ctx = ctx;
m_canvas_width = canvas.width;
m_canvas_height = canvas.height;
m_ctx.beginPath();
drawLines(30, 30);
drawStars(120, 180, 5);
m_ctx.strokeStyle = "black";
m_ctx.stroke();
}
};
})();
我的主要代码文件:
var main = (function() {
/* ================================================
Variables
=================================================== */
var canvas = document.getElementById("goban");
var ctx = canvas.getContext("2d");
/* ================================================
Calls
=================================================== */
goban.init(canvas, ctx);
/* ================================================
Events
=================================================== */
$(canvas).click(function(evt) {
...
});
})();
goban 模块中的函数将使用 canvas 或 ctx 或两者。其他模块也是如此。这是一个好方法吗?我应该使我的“主”代码全局化还是应该在每个模块中编写构造函数(如“init”函数)?如果是这样,您如何向此模式添加构造函数?有没有更好的方法来实现这一目标?