Как правильно создать имена аргументов var в модуле для создания нового класса?

В следующем примере кода я хочу каким-то образом создать переменную myThingName через аргументы функций, чтобы избежать создания глобальных имен переменных вне модуля. Я возился с окном ['myvarname'] = "Яда"; Но это глобально и похоже на полный взлом.

Короче говоря, я предполагаю, что мне нужно иметь способ сделать много переменных, как: myThingName_1 myThingName_2 и т. Д...

Фон: я пытаюсь создать конструктор Canvas Element, чтобы поместить любое количество отдельных элементов Canvas на экран. Я использую различные библиотеки, такие как Paper.js Kinetic.js и т. Д. При попытке упростить производство я создал модуль-оболочку, но теперь застрял в том, как создавать уникальные имена переменных для конструктора библиотек KLASS для их различных реализаций stage или scope.

Возможно, я делаю вещи совершенно неправильно с самого начала. Но на данный момент я в тупик, как это происходит, или как называется шаблон, который я ищу.

var MagicThingModule = {

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

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

MagicThingModule.init("sendNameForThing_1");

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");
Другие вопросы по тегам