如何将变量作为全局参数传递给IIFE函数?

问题描述 投票:0回答:1

我正在寻求将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, 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);

Full Code

[就像我说过的那样,我想将局部变量传递给我的模块,以便能够在范围内全局检查参数。

我可以像往常一样直接将变量直接传递给this.Event.drive(this.flag, this.length),但是它看起来有点脏又丑陋,因此除非有0种方法,否则我不会使用这种方法。

有什么方法可以做到这一点?

感谢您倾听。

javascript node.js module arguments iife
1个回答
0
投票

IIFE

顾名思义,它是立即调用函数,因此您可以将变量作为参数传递,因为它直到那时都已执行。

您可以通过以下方式传递值

var event = (function(name){return name})('value');

© www.soinside.com 2019 - 2024. All rights reserved.