我正在看一篇关于如何制作javascript游戏的教程,但我被困在了返回部分。为什么会有{ },init: init的作用是什么?任何帮助都将不胜感激。谢谢。
var JS_SNAKE = {};
JS_SNAKE.game = (function () {
var ctx;
var xPosition = 0;
var yPosition = 0;
var frameLength = 500; //new frame every 0.5 seconds
function init() {
$('body').append('<canvas id="jsSnake">');
var $canvas = $('#jsSnake');
$canvas.attr('width', 100);
$canvas.attr('height', 100);
var canvas = $canvas[0];
ctx = canvas.getContext('2d');
gameLoop();
}
function gameLoop() {
xPosition += 2;
yPosition += 4;
ctx.clearRect(0, 0, 100, 100); //clear the canvas
ctx.fillStyle = '#fe57a1';
ctx.fillRect(xPosition, yPosition, 30, 50); //a moving rect
setTimeout(gameLoop, frameLength); //do it all again
}
return {
init: init
};
})();
$(document).ready(function () {
JS_SNAKE.game.init();
});
发布于 2011-08-21 13:20:04
{}
是JavaScript中的object literal。这句话
return {
init: init
}
返回具有一个属性的对象。该属性的键是init
,值是名为init
的变量(在本例中是一个函数)的任何值。
在语法混乱的情况下,这是等效的,可能会更清楚:
JS_SNAKE.game = (function () {
// snip...
function performInitialization() {
// snip...
}
// snip ...
return {
init: performInitialization
};
})();
发布于 2011-08-21 13:26:42
这就是所谓的类( module pattern )--你可以用一个匿名函数来封装你的“类”(如果你愿意,也可以用来表示它)。
该函数返回可用于访问“类”方法和变量的JS对象,但只返回那些公开的(公共的)方法和变量-例如init
。
{}
是对象文字--这里使用它来声明一个空的类对象--它将作为下面“JS_SNAKE
”声明的命名空间。
https://stackoverflow.com/questions/7136532
复制相似问题