Heim  >  Fragen und Antworten  >  Hauptteil

Integrieren Sie JavaScript-Module

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;

module1Enthä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粉745412116P粉745412116406 Tage vor506

Antworte allen(1)Ich werde antworten

  • 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]; },
    };

    Antwort
    0
  • StornierenAntwort