高级原型功能



我正试图在nodejs中创建一个包装器,根据主包装器的输入来抽象不同的函数。举个例子,假设我有两个不同的文件,一个叫usa,一个叫做uk,它们都有相同的功能,但它们有不同的功能。我正在尝试编写一个函数,给定字符串usuk,我得到一个包装器函数,我可以这样调用:

const Wrapper = MyWrapper('uk')
const func1Output = Wrapper.func1(10)

我目前已经完成了上述工作,uk文件只是将其中的功能定义为原型,如下所示:

function MyWrapper () { }
MyWrapper.prototype.func1 =  (input) => console.log(input)
return new MyWrapper()

这很好用。我目前的情况是,包装器应该可以访问不同文件中的许多函数。它不仅仅是func和该特定文件中的其他内容。这是我的文件夹结构

wrappers
 - feed
  -- uk
  -- us
 - news
  -- uk
  -- us
//etc

其中,每个名为uk/us的文件都具有第二个代码片段中的原型函数。因此,每当我想使用feed模块时,例如,我都必须像第一个代码片段中那样做。因此,它是一个每个模块的原型,它不是每个字符串(即uk/us(的高级别。

我想做的是在wrappers文件夹中只有一个文件index.js,它负责为所有模块提供一个包装器。类似MyWrapper('uk').feed.func1()

这是一个很难解释的问题,但如果需要的话,我很乐意编辑这篇文章进行更多的澄清。

为什么不直接返回常规对象?

 // wrapper/index.js
 const wrappers = {
  uk: {
   func1() { /*...*/ }
  },
  us: {
   func1() { /*...*/ }
  }
};
module.exports = country => wrappers[country];

可以用作:

  const wrapper = require("./wrapper/")("uk");
 wrapper.func1();

最新更新