#javascript #factory-pattern
Вопрос:
У меня есть 2 заводские функции, которые возвращают методы внутри объекта:
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
Как вы можете видеть, я пытаюсь вызвать/вызвать первую фабрику внутри второй, и это выдает мне ошибку ..
итак, можно ли вызвать заводскую функцию внутри другой и внутри этой функции также вызвать другую?
потому что мне нужен только один, который контролирует все, а остальные похожи на скрытые слои
Комментарии:
1.
mid
внутриcontainer()
просто пустой объект. На нем нет никакого.test()
метода. Если это должно исходить из параметраmiddleware
, то вы не передаете никаких аргументов,let dim = container();
поэтому вам нужно это сделать. Если это должно прийти откуда-то еще, вам нужно это сделать.