видимости:
function call_from_window(FUNC){
(0,window.eval).call(window,FUNC.toString().replace(/^.*?\{/i,'').replace(/}[^}]*$/i,''));
};
А вот так – сборку «окружения»:
function code_from_functions(main,others,text){
var code = '"use strict";\n\n';
if(others && others.length)
others.forEach(function(func){
code += func.toString()+'\n\n';
});
if(text)
code += text+'\n\n';
code += '('+main.toString()+')(true);\n';
return code;
};
– Возвращает строку кода (для воркера), в её начале будут функции из массива others как есть (доступные по именам), тело функции main будет выполнено, но перед ним литерально добавляется код из text (типа объявления глобальных переменных).
Ух... Мне надо в это вчитаться) Спасибо, большое!
Обсуждают сегодня