搜尋

首頁  >  問答  >  主體

整合JavaScript模組

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

第一個包含陣列的模組

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粉745412116P粉745412116484 天前564

全部回覆(1)我來回復

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

    回覆
    0
  • 取消回覆