搜索

首页  >  问答  >  正文

整合JavaScript模块

在我的代码中,从一个导入的模块声明了一个数组。与该模块相关的函数是从第二个模块导入的。以下是我的代码的简化版本:

第一个包含数组的模块

let module1 = {};
module1.array = [10, 20, 30];

第二个包含函数的模块

var module2 = {};
module2.fct1 = () => { return array[0]; };
module2.fct2 = () => { return array[1]; };
module2.fct3 = () => { return array[2]; };

我想要将这两个模块合并成一个实体:

module1.fct1 = module2.fct1;
module1.fct2 = module2.fct2;
module1.fct3 = module2.fct3;

module1现在包含了数组和函数

{
  array: [10, 20, 30],
  fct1: () => { return array[0];    },
  fct2: () => { return array[1];    },
  fct3: () => { return array[2];    }
}

但是,当我调用函数时,数组似乎不在函数的作用域内:

console.log (module1.fct1())

我得到了以下错误:

未捕获的引用错误:数组未定义

如果我在同一个文件中创建一个包含数组和函数的单个模块,它可以工作。

我的问题是:在JavaScript中是否有一种方法可以合并两个模块。我的最终目标是将合并后的模块传递给另一个函数。

这是一个JSFiddle链接:https://jsfiddle.net/Imabot/rxsfvgda/4/

P粉745412116P粉745412116445 天前539

全部回复(1)我来回复

  • P粉254077747

    P粉2540777472023-09-10 10:43:41

    看起来你期望module2的部分是可以在任何其他(模块)对象上调用的方法,这些对象具有.array属性。为此,你需要通过this.array访问数组,并且需要使用方法语法而不是箭头函数:

    var module2 = {};
    module2.fct1 = function() { return this.array[0]; };
    module2.fct2 = function() { return this.array[1]; };
    module2.fct3 = function() { return this.array[2]; };

    或者更简单的写法:

    var module2 = {
      fct1() { return this.array[0]; },
      fct2() { return this.array[1]; },
      fct3() { return this.array[2]; },
    };

    回复
    0
  • 取消回复