Я работаю над фреймворком javascript.У меня есть несколько независимых скриптов, которые выглядят так:
core.modules.example_module = function(sandbox){
console.log('wot from constructor ==', wot);
return{
init : function(){
console.log('wot from init ==', wot);
}
};
};
эта функция вызывается из другого внешнего скрипта.Я пытаюсь передать переменные в эту функцию, чтобы к ним можно было получить доступ without using the this keyword.
В приведенном выше примере произойдет ошибка, сообщающая, что wot не определено.
Если яобернуть функцию в анонимную функцию и объявить переменные там, я получаю ожидаемые желаемые результаты
(function(){
var wot = 'omg';
core.modules.example_module = function(sandbox){
console.log('wot from creator ==', wot);
return{
init : function(){
console.log('wot from init ==', wot);
}
};
};
})();
Я пытаюсь сделать это, объявив переменные дальше по цепочке областей видимости, чтобы они были доступны в модулебез использования этого ключевого слова, как во втором примере.Я не верю, что это возможно, поскольку похоже, что область выполнения функций запечатана при объявлении функции.
update
Чтобы уточнить, где я пытаюсь определить wot.В отдельном файле javascript у меня есть объект, который вызывает функцию модуля регистра, подобную этой:
core = function(){
var module_data = Array();
return{
registerModule(){
var wot = "this is the wot value";
module_data['example_module'] = core.modules.example_module();
}
};
};