Javascript 在模块中为新类创建参数变量名的正确方法是什么?

Javascript 在模块中为新类创建参数变量名的正确方法是什么?,javascript,kineticjs,paperjs,Javascript,Kineticjs,Paperjs,在下面的代码示例中,我希望通过函数参数以某种方式创建一个var myThingName,这样就可以避免在模块之外构建全局var名称。 我已经修补了窗口['myvarname']=“yada”;但这是一个全球性的问题,感觉像是一次彻底的黑客攻击 简言之,我假设我需要一种方法来制作许多变量,比如:myThingName\u 1 myThingName\u 2等等 背景:我试图构建一个Canvas元素构造函数,将任意数量的单个Canvas元素放到屏幕上。我正在使用各种库,如Paper.js Kinet

在下面的代码示例中,我希望通过函数参数以某种方式创建一个var myThingName,这样就可以避免在模块之外构建全局var名称。 我已经修补了窗口['myvarname']=“yada”;但这是一个全球性的问题,感觉像是一次彻底的黑客攻击

简言之,我假设我需要一种方法来制作许多变量,比如:myThingName\u 1 myThingName\u 2等等

背景:我试图构建一个Canvas元素构造函数,将任意数量的单个Canvas元素放到屏幕上。我正在使用各种库,如Paper.js Kinetic.js等。在尝试优化生产时,我构建了一个模块包装器,但现在我一直在为库KLASS构造函数创建唯一的var名称,以用于其stage或scope的各种实现

也许我从一开始就做得完全不对。 但目前我很困惑,这是怎么回事,或者我正在寻找的图案的名称是什么

var MagicThingModule = {

    createThing : function(myThingNameAsString){
        var myThingName = myThingNameAsString;
        myThingName = new KLASS.Shape({ // code });
    },

    init : function(myThingNameAsString){
        createThing(myThingNameAsString);
    }
}

MagicThingModule.init("sendNameForThing_1");
那么:

var MagicThingModule = {
    allMyThings: {},
    createThing : function(myThingNameAsString){
        var myThingName = myThingNameAsString;
        myThingName = new KLASS.Shape({ // code });
        this.allMyThings[myThingNameAsString] = myThingName;
    },

    // use me to et your thing back...
    getMyThing: function(myThingName){
        return this.allMyThings[myThingName];
    },

    init : function(myThingNameAsString){
         createThing(myThingNameAsString);
    }
}
您可以稍后通过以下方式引用它:

var myThing = MagicThingModule.getMyThing("sendNameForThing_1");

斯维耶特!!!!成功了!非常感谢。你知道这个图案的名字吗?我猜是关联存储数组,但这似乎不是一个好标题。我真的不知道这个模式的名称,或者它是否是一个模式。。如果你看到它的名字,请发表评论。。。很高兴这对你有帮助:)