@Rewwwers

Можно ли задать новый или переопределить стандартный метод фабричной функции до её инициализации?

Есть модуль user.js
//user.js
'use strict';

module.exports = function() {
  return function(value) {
    return {
      name: "Вася",
      sayHi: function() {console.log("Привет, я " + name)
      }
    };
  }
}


Подключаем это модуль в index.js

//index.js

'use strict';

var user = require('./user'); 

var newUser = user(); // newUser - функция для создания объекта

var u0 = newUser(); // {name: "Вася", sayHi: function() { console.log("Привет, я " + name) } }
var u1 = newUser(); // Тоже самое


Нужно, чтобы в index.js вызвался метод isValid() функции newUser()
newUser.isValid(value);

Я могу задать этот метод после инициализации функции newUser() вот так:
newUser.isValid() = function() {//какие-то действия}

Но как задать этот метод в модуле user.js, ведь там функция создающая объект анонимная?

Конечный файл index.js должен выглядеть так:
//index.js

'use strict';

var user = require('./user'); 

var newUser = user(); // newUser - функция для создания объекта

newUser.isValid(/*Какой-то параметр*/); //Возвратить [Boolean]. Например true, если "Какой-то параметр прошёл проверку"

var u0 = newUser(); // {name: "Вася", sayHi: function() { console.log("Привет, я " + name) } }
var u1 = newUser(); // Тоже самое
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 2
vitali1995
@vitali1995
Думаю, нет. Сам искал ответ на похожую проблему и единственным рабочим способом определил подмену модуля своей реализацией.
Ответ написан
Комментировать
lazalu68
@lazalu68
Salmon
Можете просто использовать конструктор, тогда подобных проблем не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы