在我的程式碼中,從一個導入的模組宣告了一個陣列。與該模組相關的函數是從第二個模組導入的。以下是我的程式碼的簡化版本:
第一個包含陣列的模組
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/
看起來你期望
module2
的部分是可以在任何其他(模組)物件上呼叫的方法,這些物件具有.array
屬性。為此,你需要透過this.array
存取數組,並且需要使用方法語法而不是箭頭函數:或更簡單的寫法: