Наследование в JS. Может лучше использовать примеси?

Есть достаточно большой проект на node js. Statefull приложение. На старте загружаю данные из Монго и на их основе создаю свои классы. Все они унаследованы от "основного класса", в котором содержится большая часть используемых методов и логика сохранения в Монго. Многие классы наследуются еще и от других классов.
Наследование реализовано примерно так:
MyClass.prototype = _.extend(Object.create(CommonClass.prototype),SpecialClass.prototype,...);

Есть класс, у которого более чем 30 атрибутов - объекты созданные таким образом. Назовем его предмет.
Получается, что я как бы примешиваю необходимый функционал в прототип класса.
У меня есть несколько тысяч предметов, я раз в 100 мс запускаю их перебор, где для каждого из них произвожу простые действия - сравниваю значения атрибутов и вызываю прототипные методы, изменяющие какой-то атрибут.
Время перебора с модификацией 1 000 предметов занимает примерно 90 мс.
Я пробовал делать все тоже самое на объектах вида
var Ob = function(opts){
  this.attr1 = opts.attr1;
  .....
}

Ob.prototype.attr25 = 500;

Ob.prototype.method1 = function(){
  //расчет расстояния между двумя точками, координаты заложены в атрибутах, некоторые лежат в прототипе (attr25)
  var distance = Math.sqrt(...)
  return distance < 1000;
}

Перебор 20 000 таких объектов занимает меньше времени!
Почему так?
Насколько я вообще правильно подошел к реализации?
Есть возможность все переделать, но я не знаю как лучше.
  • Вопрос задан
  • 1481 просмотр
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Перейти на node 5+
Использовать es6 классы.
Ответ написан
Ваш ответ на вопрос

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

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