javascript游戏:为什么返回init:init?
我正在学习如何制作javascript游戏的教程,但我仍停留在返回部分。为什么有{},init:init的作用是什么?任何帮助都将不胜感激。谢谢javascript游戏:为什么返回init:init?,javascript,Javascript,我正在学习如何制作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()
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();
});
var JS_SNAKE={};
JS_SNAKE.game=(函数(){
var-ctx;
var xPosition=0;
var-yPosition=0;
var frameLength=500;//每0.5秒新建一帧
函数init(){
$('body')。追加('');
var$canvas=$(“#jsSnake”);
$canvas.attr('width',100);
$canvas.attr('height',100);
var canvas=$canvas[0];
ctx=canvas.getContext('2d');
gameLoop();
}
函数gameLoop(){
xPosition+=2;
位置+=4;
clearRect(0,0,100,100);//清除画布
ctx.fillStyle='#fe57a1';
fillRect(xPosition,yPosition,30,50);//一个移动的rect
setTimeout(gameLoop,frameLength);//请重新执行所有操作
}
返回{
init:init
};
})();
$(文档).ready(函数(){
JS_SNAKE.game.init();
});
在JavaScript中,{}
是一个。声明
return {
init: init
}
返回具有一个属性的对象。该属性的键是init
,值是名为init
的变量具有的任何值(在本例中为函数)
如果语法混乱,这是等效的,可能更清楚:
JS_SNAKE.game = (function () {
// snip...
function performInitialization() {
// snip...
}
// snip ...
return {
init: performInitialization
};
})();
这就是所谓的a-在这里,你用一个匿名函数来封装你的“类”(或者表示它,如果你愿意的话) 该函数返回可用于访问“类”方法和变量的JS对象,但只返回那些公开的(公共的)-例如
init
{}
是对象文字-这里使用它来声明一个空的JS_SNAKE
对象-它将作为以下“类”声明的名称空间。您是如何被卡住的?您希望返回什么,以及正在发生(或未发生)什么?我的意思是,为什么您不能只返回init(),使用大括号有什么意义?我被语法搞糊涂了。return init()
通过调用init
函数返回任何值。这与返回包含invocable函数的对象完全不同。