javascript создать рабочее пространство для кодирования (фреймворк)

#javascript

#javascript

Вопрос:

в случае, если у меня есть небольшая «платформа» для общественности, как я могу создать свою собственную «рабочую область»? итак, я могу использовать любое имя переменной, которое я хочу?

как я могу это сделать?

Ответ №1:

Используйте анонимную оболочку функции. Любые переменные, которые определены с помощью var , не будут доступны для кода вне оболочки. Всякий раз, когда вы хотите определить метод или свойство, добавьте их к tobepublic объекту (который возвращается в конце).

 var your_namespace = (function(){
    //Your own "workspace"
    var tobepublic = {};
    //Define any attributes and methods which should be public on tobepublic
    tobepulic.helloWorld = function(){
        alert("Hi!");
    }

    return tobepublic;
})();
  

Публично приведенный выше код выглядит как приведенный ниже код. Однако описанные выше методы также могут иметь доступ к частным методам / переменным, которые нельзя увидеть «снаружи»:

 var your_namespace = {
    helloWorld: function(){
        alert("Hi!");
    }
}
  

Ответ №2:

Создайте локальную область замыкания функции.

Область действия?

Этот код может немного прояснить ситуацию для вас. Прочитайте комментарии.

 <script type="text/javascript">

    // global scope
    function globalFunc(text) {
        alert(text);
    }

    var privateFunc = null;

    // function closure scope
    (function(){

        // closure function
        function closureFunc(text) {
            // can call global
            globalFunc(text);
        }

        // let's make closure function accessible from global scope
        // since privateFunc variable is in global scope
        privateFunc = closureFunc;
    })();

    // call closure function
    privateFunc("calling closure function");

    // ERROR: this will not work due to function being in closure scope
    closureFunc("calling closure function");

</script>
  

Создание локальной области

Что на самом деле делает эта странная функция в круглых скобках?

Это некоторая функция:

 function name(someParameter) { ... }
  

Заключив его в круглые скобки и добавив некоторые в конце, он сразу же выполняет его:

 (function name(someParameter) { ... })("Parameter text value");
  

Обратите внимание на параметр функции…

Почему библиотеки используют локальную область видимости?

Библиотеки обычно используют локальную область видимости, чтобы не загрязнять и, что более важно, конфликтовать с другими возможными библиотеками. Подумайте о двух библиотеках, которые бы определяли вызываемую функцию getName . Последний, который определил бы его, просто переопределил бы реализацию первого, что привело бы к сбоям в работе первой библиотеки.

Когда каждая библиотека создает свою собственную область закрытия, они могут создавать любые функции, переменные внутри и использовать их, не опасаясь быть переопределенными. Библиотеки обычно просто предоставляют некоторую небольшую часть в глобальную область, поэтому другие скрипты могут фактически использовать библиотеку.

 (function() {

    var closureVar = "I'm local";

    globalVar = "I'm global";
    // or
    window.globalVar2 = "I'm global equivalent";

})();
  

исключение var или ссылка window на объект делает функцию или переменную глобальными.