如何从 requirejs 模块中访问全局变量?

问题描述 投票:0回答:2

我定义了一个模块(为了代码易于阅读,我删除了一些不必要的行...)

下面是我的 game.js

define(['util'], function (util) {
    return {
        createNew : function (setting) {
            var game = {
                intervalTrigger : function () {
                    return window.setInterval(function () {
                        score++;//how to read deal with this value?
                    }, 1000);
                }
            }
        };
        return game;
    }
};
});

并用于 app.js:

require.config({
    baseUrl: "./src",
});

requirejs(['util', 'game'],
    function (util,game) {
        var score = 0;

        function startgame(level) {
            var setting = {};
            var g = game.createNew();
            g.intervalTrigger();
        }
        startgame(0);
    });

就我而言,我需要 createNew 为数不多的几次,所以分数不能存储在模块中。

那么如何访问 score 在模块中 game?

javascript requirejs
2个回答
0
投票

你需要定义 score 作为一个实际的模块。比如说。

define([], function() {
      var gameStats = {
           score: 0
      };

      return gameStats;
});

现在你只需要在任何你需要使用游戏统计的地方注入:


0
投票

创建一个getset函数并在game.js中公开。

define(['util'], function (util) {
    var score = 0;
    return {
        createNew : function (setting) {
            var game = {

                intervalTrigger : function () {
                    return window.setInterval(function () {                     
                      score++;//how to read deal with this value?
                    }, 1000);
                }
                getScore: function(){ return score;} //getting the score
                setScore: function(value){score = value;} //setting the score
                }

            };
            return game;

        }
    };
});

现在你可以在这里使用:

        require.config({
          baseUrl: "./src",
    });
requirejs(['util', 'game'],
        function   (util,game) {
            var score = 0;

            function startgame(level) {
                var setting = {};
                var g = game.createNew();
                g.setScore(score); //setting the score
                g.intervalTrigger();
            }
            startgame(0);
     });
© www.soinside.com 2019 - 2024. All rights reserved.