лучей добра всем!
Возник вопрос, холиворный наверное, насчет использования свойства __proto__ в node.js.
Есть некие декларативные объекты JS, записанные в отдельных файлах, для примера:
User = {
title: 'пользователь',
fields: {
Name: {
type: 'string',
minSize: 3,
title: 'Имя'
}
}
}
но не JSON, т.к. может помимо декларативных свойств иметь небольшие функции (validate например)
помимо всего прочего, эти объекты должны иметь прототипы, со своим, базовым функционалом (в основном методы).
Так вот, как делают в лучших домах кремниевой долины - создать конструкторы объектов (ака классы), и использовать их, или проставить прототипы пользуясь свойством __proto__, которое в nodejs/v8 определено и доступно (более того, вроде как уже и в ECMAScript внесли)?
Конструкторы выглядят логичнее:
User = new User({
title: 'пользователь',
fields: {
Name: new Field({
type: 'string',
minSize: 3,
title: 'Имя'
}),
}
});
а с __proto__ - менее многословно (тем более, если учесть отсутствие кучи require(") в заглавии) и более декларативно.
Кроме того, запись
Name: new Field({
type: 'string',
minSize: 3,
title: 'Имя'
}),
является более ресурсоемкой для машины, т.к. выполняет создание объекта, передачу его параметром, последующее копирование полей и удаление объекта инициализации. Вариант с параметрами конструктора - не подходит, т.к. свойств может быть много.
Пример простой, на самом деле вложение объектов может быть достаточно большое.
Holy question - насколько уродски использование __proto__ в программе?