整合JavaScript模組
P粉745412116
P粉745412116 2023-09-09 21:45:59
0
1
552

在我的程式碼中,從一個導入的模組宣告了一個陣列。與該模組相關的函數是從第二個模組導入的。以下是我的程式碼的簡化版本:

第一個包含陣列的模組

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/

P粉745412116
P粉745412116

全部回覆(1)
P粉254077747

看起來你期望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]; },
};
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板