javascript:调用另一个工厂函数的工厂函数,该工厂函数调用另一个工厂函数

javascript:调用另一个工厂函数的工厂函数,该工厂函数调用另一个工厂函数,javascript,factory-pattern,Javascript,Factory Pattern,我有两个工厂函数,用于返回对象中的方法: let midleware = function() { //error let _error = false; let _errorEmpty = 'Second arg must be [service/s]!'; let _errorName = 'First arg must be the name (reference) for your service/s'; //checks let _isArr = Array.i

我有两个工厂函数,用于返回对象中的方法:

let midleware = function() {
  //error
  let _error = false;
  let _errorEmpty = 'Second arg must be [service/s]!';
  let _errorName = 'First arg must be the name (reference) for your service/s';
  //checks
  let _isArr = Array.isArray('arr');
  let _isFn = (typeof 'arr' == 'function');

  let fnsHolder = [];

  return {
    setToArray: function(arr) {
      if (_error) return;
      fnsHolder = (_isArr) ? arr : [arr];
      return fnsHolder
    },
    error: function(...args) {
      console.log('-------------false-----------')

    },
    checkType: function() {

    }
  }
}



let mid = midleware();

let container = function(midleware) {
  let _holder = new Map();

  let mid = Object.assign({}, midleware); // HOW TO CALL ANOTHER FACTORY INSIDE THIS ONE

  return {
    set: function(name, arr) {
      _holder.set(name, arr)
      console.log('set is Done!')
    },
    get: function(name) {
      return _holder.get(name)
    },
    size: function() {
      console.log(_holder.size);
      checker.error()
    },
    isExist: function(name) {
      return _holder.has(name)
    },
    remove: function(name) {
      _holder.delete(name)
      console.log('item has been Deleted!')
    },
    test: function() {
      mid.error()
    }
  }
}

let dim = container();
dim.test() //error 'undifined'

dim.set('hi', 'hello') //set is Done!
dim.isExist('hi') //true
正如你所看到的,我试图调用/调用第二个工厂中的第一个工厂,这给了我一个错误。。 那么,有没有可能在另一个函数中调用工厂函数,在另一个函数中调用另一个函数呢?
因为我只需要一个能控制所有东西的东西,其他的就像隐藏的层一样,在容器里面(只是一个空的对象。它没有
.test()
方法。如果它应该来自参数
middleware
,那么您没有在
let dim=container()中传递任何参数所以你需要这样做。如果它应该来自其他地方,你需要这样做。