Rumah > Soal Jawab > teks badan
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;
module1
Kini 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粉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]; }, };