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

What is a proper way to create argument var names in a module for a new Class creation?

本文关键字:方法 是什么 参数 模块 创建 新类 var      更新时间:2023-09-26

在下面的代码示例中,我想通过函数参数以某种方式创建一个var myThingName,这样我就可以避免在模块外部构建全局变量名称。我修改了window['myvarname'] = "yada";但这是全局的,感觉就像一个完全的hack。

简而言之,我假设我需要一种方法来创建许多变量,如:myThingName_1 myThingName_2等…

背景:我试图建立一个画布元素构造器,将任何数量的单个画布元素放到屏幕上。我正在使用各种库,如Paper.js Kinetic.js等。当我试图简化生产时,我构建了一个模块包装器,但现在我被困在如何为库的KLASS构造函数创建独特的var名称,以用于它们的各种阶段或范围的实现。

也许我从一开始就做错了。但是现在我不知道这是怎么回事,或者我正在寻找的模式的名称是什么。

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");