易于访问的变量,不在全局范围内

时间:2015-12-01 12:56:43

标签: javascript createjs

我正在使用CreateJS库构建游戏。在当前版本中,我在Global范围中保存了很多变量和对象,这非常简洁,并且使各种扩展类可以轻松地重用SpriteSheets等。

我正在寻找一种不使用全局范围的方法。显然,我可以将spritesheet或包含spritesheet的类作为参数传递给我制作的所有displayobjects,但我希望有更聪明的方法来做到这一点。

有关如何实现这一目标的任何建议或提示都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您可能需要使用模块

var main = (function(){
    var myPrivateVal1 = "Something";
    var myPrivateVal2 = 56;
    var myVeryPrivateVal = 3;

    //Return only what you want to expose
    return {
        myPublicVal: 123,
        getVal1: function(){
            return myPrivateVal1;   
        },
        getVal2: function(){
            return myPrivateVal2;   
        },
        doCalculation: function(){
            return myVeryPrivateVal * myPrivateVal2;
        }
    }
})();

console.log(main.myPublicVal); //123
console.log(main.myPrivateVal1); //undefined
console.log(main.myPrivateVal2); //undefined
console.log(main.myVeryPrivateVal); //undefined

console.log(main.getVal1()); //Something
console.log(main.getVal2()); //56
console.log(main.doCalculation()); //168

这里有一个全局变量 main ,它是暴露您需要公开的内容的模块,但仍会跟踪所需的变量。

参见this JSFiddle。