簡體   English   中英

我可以在node.js的module.export中重載方法嗎?

[英]Can I overload method in module.export in node.js?

我有一個帶有以下代碼的app.js:

var addnote = (title,body) => { /* enter code here */ }
module.exports = {addnote};

我可以addnotes文件添加另一個具有不同參數的addnotes函數嗎?

與其他編程語言(例如C#和Java)不同,JavaScript中的函數重載不存在。

您應該做的是將一個對象作為參數附加了屬性並在那里進行過濾。

您可以從小的“映射函數”中調用不同的函數,只是在不大的情況下在其中實現邏輯(以保持代碼清晰)。

function foo(parameters){

   var title = parameters.title;
   var body = parameters.body;

   if(parameters.extraProperty){
      // oh we have extraProperty passed in too, run a different function?
      bar(title, body, parameters.extraProperty); // ??
   }
}

foo({title: 'Title', body: 'Body', extraProperty: 'This is extra...'});

如果這是您自己的自定義模塊,則可以使用函數重寫的概念,其中每個子類可以有自己的處理方式,也可以有默認的處理方式。

 class Parent { constructor(name) { this.name = name; } greet() { console.log(`Hello ${this.name}`); } } class Child1 extends Parent { constructor(name) { super(name); } greet() { console.log(`Hey there ${this.name}. This is Child 1`); } } class Child2 extends Parent { constructor(name) { super(name); } greet() { console.log(`Hi there ${this.name}. This is Child 2`); } } const o1 = new Child1('Foo') const o2 = new Child2('Foo') o1.greet(); o2.greet(); 

但是,如果您嘗試覆蓋外部模塊中的函數( 您無權訪問該代碼,如庫 ),我的建議是在該容器中創建包裝器並添加功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM