Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.01.2022, 03:50
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Кто то пытается переизобрести фабрики производящие классы объектов по необходимым параметрам и запросам.

Может поможет гугление в сторону "паттерн фабрика js"?
Ответить с цитированием
  #12 (permalink)  
Старый 16.01.2022, 09:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Совсем "по правилам" надо так добавлять
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,
        });
Ответить с цитированием
  #13 (permalink)  
Старый 16.01.2022, 10:13
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

Для тех, кто может столкнуться с подобным вопросом:
Если погуглить задачу разбиения большого файла 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, 16.01.2022 в 13:10.
Ответить с цитированием
  #14 (permalink)  
Старый 16.01.2022, 11:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

fxobject,


Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плис новичку в ajax urel AJAX и COMET 6 12.01.2013 21:36
Помогите новичку плиз!!!!!!!!!!!!! Юрий Манылов Общие вопросы Javascript 1 18.12.2012 11:37
Помогите новичку! Анатолий Саратовцев Events/DOM/Window 7 04.08.2012 17:46
Помогите новичку dmpol18 Я не знаю javascript 17 03.08.2012 02:47
Помогите новичку с выпадающим списком interest Элементы интерфейса 5 19.05.2010 13:15