我正在寻求将local variables
作为global arguments
传递给IIFE(模块模式),但是我不知道该怎么做。
这里有一个我的模块之一,需要接收一些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,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,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种方法,否则我不会使用这种方法。
有什么方法可以做到这一点?
感谢聆听。