Я хочу передать local variables
в IIFE (шаблон модуля) как global arguments
, но я понятия не имею, как мне это сделать.
Здесь у меня есть один из моих модулей, который нуждаетсячтобы получить variables
как arguments
вне области видимости модуля:
const Event = (function(flag, length) {
console.log(flag, length);
function drive(target, event, callback) {
let isStringArray = Array.isArray(event);
if (isStringArray) {
event.forEach(string => register(target, string, callback))
}
}
function register(target, event, callback) {
target.forEach((item, index) => {
item.addEventListener(event, callback)
})
}
return {
drive: drive
}
})();
export default Event;
И это мой основной код:
import Event from './event.js';
import Process from './process.js';
class Slider {
constructor(root, elem, event, process) {
/* Instance Arguments */
this.root = document.getElementById(root);
this.elem = this.root.querySelectorAll(elem);
/* Local Variables that need to pass to Module Pattern. */
this.flag = true;
this.length = this.elem.length;
/* Global Modules */
this.Event = event(this.flag, this.length); // doesn't work.
this.Process = process;
this.Setup;
}
get Setup() {
this.Event.drive(this.elem, ['mouseenter', 'click'], (e) => this.Process.finish(e));
}
}
let slider = new Slider('slider', '.image', Event, Process);
Полный код
Как я уже сказал, я хочу передать локальные переменные моему модулю, чтобы иметь возможность глобально просматривать аргументы внутри области.
Я мог бы просто передать переменные в this.Event.drive(this.flag, this.length)
напрямую, какмы обычно это делаем, но это выглядит немного грязно и уродливо, поэтому я не собираюсь использовать этот способ, если нет 0 способов.
Есть ли способы сделать это?
Спасибослушать.