Heim > Fragen und Antworten > Hauptteil
In meinem Code wird ein Array aus einem importierten Modul deklariert. Funktionen, die sich auf dieses Modul beziehen, werden aus dem zweiten Modul importiert. Hier ist eine vereinfachte Version meines Codes:
Das erste Modul, das Arrays enthält
let module1 = {}; module1.array = [10, 20, 30];
Zweites Modul mit Funktionen
var module2 = {}; module2.fct1 = () => { return array[0]; }; module2.fct2 = () => { return array[1]; }; module2.fct3 = () => { return array[2]; };
Ich möchte diese beiden Module zu einer Einheit zusammenführen:
module1.fct1 = module2.fct1; module1.fct2 = module2.fct2; module1.fct3 = module2.fct3;
module1
Enthält jetzt Arrays und Funktionen
{ array: [10, 20, 30], fct1: () => { return array[0]; }, fct2: () => { return array[1]; }, fct3: () => { return array[2]; } }
Wenn ich jedoch die Funktion aufrufe, scheint das Array außerhalb des Funktionsbereichs zu liegen:
console.log (module1.fct1())
Ich habe die folgende Fehlermeldung erhalten:
Unabgefangener Referenzfehler: Array ist undefiniert
Wenn ich ein einzelnes Modul mit Arrays und Funktionen in derselben Datei erstelle, funktioniert es.
Meine Frage ist: Gibt es in JavaScript eine Möglichkeit, zwei Module zusammenzuführen? Mein ultimatives Ziel ist es, das zusammengeführte Modul an eine andere Funktion zu übergeben.
Dies ist ein JSFiddle-Link: https://jsfiddle.net/Imabot/rxsfvgda/4/
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]; }, };