Я работаю над javascript framework. У меня есть несколько независимых сценариев, которые выглядят так:Возможно ли это в 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);
}
};
};
})();
Что я пытаюсь сделать, это объявить переменные дальше по цепочке областей видимости, таким образом они могут быть доступ к ним в модуле без использования этого ключевого слова, как второй пример. Я не считаю, что это возможно, так как похоже, что область выполнения функций запечатана при объявлении функции.
Чтобы уточнить, где я пытаюсь определить 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();
}
};
};
Где находится 'wot', определенный в первом примере? –
@musicfreak: OP говорит, что он получает ошибку, которая 'wot' не определена. Если вы не определяете переменную с ключевым словом 'var', JS будет искать ее как свойство объекта' window'. –
@ Тобиас: Я так понимаю. Мне было интересно, где находится объект, который OP хочет получить, - другими словами, какую область он ищет. –