首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript游戏:为什么返回init: init?

javascript游戏:为什么返回init: init?
EN

Stack Overflow用户
提问于 2011-08-21 13:16:57
回答 2查看 365关注 0票数 0

我正在看一篇关于如何制作javascript游戏的教程,但我被困在了返回部分。为什么会有{ },init: init的作用是什么?任何帮助都将不胜感激。谢谢。

代码语言:javascript
运行
复制
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();
});
EN

回答 2

Stack Overflow用户

发布于 2011-08-21 13:20:04

{}是JavaScript中的object literal。这句话

代码语言:javascript
运行
复制
return {
    init: init
}

返回具有一个属性的对象。该属性的键是init,值是名为init的变量(在本例中是一个函数)的任何值。

在语法混乱的情况下,这是等效的,可能会更清楚:

代码语言:javascript
运行
复制
JS_SNAKE.game = (function () {
    // snip...

    function performInitialization() {
        // snip...
    }

    // snip ...

    return {
        init: performInitialization
    };
})();
票数 1
EN

Stack Overflow用户

发布于 2011-08-21 13:26:42

这就是所谓的类( module pattern )--你可以用一个匿名函数来封装你的“类”(如果你愿意,也可以用来表示它)。

该函数返回可用于访问“类”方法和变量的JS对象,但只返回那些公开的(公共的)方法和变量-例如init

{}是对象文字--这里使用它来声明一个空的类对象--它将作为下面“JS_SNAKE”声明的命名空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7136532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档