Кто то пытается переизобрести фабрики производящие классы объектов по необходимым параметрам и запросам.
Может поможет гугление в сторону "паттерн фабрика js"? |
Совсем "по правилам" надо так добавлять
test.js const methods = { function test() { console.log(this.name) } } module.exports = methods const methods = require('./test') class Tmp { constructor(name) { //.... } home() { //... } } methods.__proto__ = Tmp.prototype.__proto__ Object.defineProperty(Tmp.prototype, 'test', { writable: true, enumerable: false, configurable: true, value: methods.test, }); |
Для тех, кто может столкнуться с подобным вопросом:
Если погуглить задачу разбиения большого файла node.js на куски то все решения будут подобны предложенному варианту пана Проффэсора. Данный вариант технически работает, но эстетически дискомфортен и неприемлем. И большой массив инициализировать можно присваивая каждому элементу значение построчно. Теоретически - тоже работает. Ситуацию усугубляет тот факт, что JS не имеет множественного наследования. Поэтому получилось два варианта решения. Первый вариант: Разбиваем класс как вам удобно. Выносим функции во внешние файлы и связываем из последовательно цепочкой при помощи наследования proto например: test1.js class myClass{ function2(){} function1(){} } module.exports = myClass; test2.js const test1 = require('./test1.js'); class myClass{ __proto__: test1 function3(){} function4(){} } module.exports = myClass; main.js const test2 = require('./test2.js'); class myClass{ __proto__: test2 function5(){} function6(){} } Обратите внимание, что во всех файлах имя класса остается такое же как у класса в основном файле. Тот же самый вариант получился если бы мы задействовали extends: test1.js class myClass{ function2(){} function1(){} } module.exports = myClass; main.js const test1 = require('./test1.js'); class myClass extends test1{ constructor(){ super( ); // -- здесь обязательно вызывается конструктор дочернего объекта } function5(){} function6(){} } В этом варианте единственный недостаток - последовательная цепочка разбивки может быть логически несостоятельна. Например функции работы с смс сообщениями будут наследовать класс работы с консолью линукс машины и т.д. Поэтому для меня данный метод тоже не подошел. Есть второй вариант - использовать примеси. Причем есть задумка делать подключение блоков функции "по требованию". Если же класс функционально однороден - то первый метод найболее подходит. Надеюсь кому то может пригодиться. Спасибо |
fxobject,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Часовой пояс GMT +3, время: 21:04. |