cari

Rumah  >  Soal Jawab  >  teks badan

Mengintegrasikan modul JavaScript

Dalam kod saya, tatasusunan diisytiharkan daripada modul yang diimport. Fungsi yang berkaitan dengan modul ini diimport daripada modul kedua. Berikut ialah versi ringkas kod saya:

Modul pertama yang mengandungi tatasusunan

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

Modul kedua yang mengandungi fungsi

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

Saya ingin menggabungkan dua modul ini menjadi satu entiti:

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

module1Kini termasuk tatasusunan dan fungsi

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

Walau bagaimanapun, apabila saya memanggil fungsi, tatasusunan nampaknya berada di luar skop fungsi:

console.log (module1.fct1())

Saya mendapat ralat berikut:

Ralat rujukan tidak ditangkap: tatasusunan tidak ditentukan

Jika saya mencipta satu modul yang mengandungi tatasusunan dan fungsi dalam fail yang sama, ia berfungsi.

Soalan saya ialah: Adakah terdapat cara dalam JavaScript untuk menggabungkan dua modul. Matlamat utama saya adalah untuk menghantar modul yang digabungkan ke fungsi lain.

Ini ialah pautan JSFiddle: https://jsfiddle.net/Imabot/rxsfvgda/4/

P粉745412116P粉745412116441 hari yang lalu534

membalas semua(1)saya akan balas

  • P粉254077747

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

    Nampaknya anda menjangkakan module2的部分是可以在任何其他(模块)对象上调用的方法,这些对象具有.array属性。为此,你需要通过this.array untuk mengakses tatasusunan, dan perlu menggunakan sintaks kaedah dan bukannya fungsi anak panah:

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

    atau lebih ringkas:

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

    balas
    0
  • Batalbalas