Задать вопрос
dom1n1k
@dom1n1k

Как влияет прототип на потребление памяти в JS?

Допустим, я пишу JS-библиотеку по такой вот схеме.
Ключевая особенность тут в том, что непосредственно данных (свойств) в объекте типа DummyClass немного, но очень-очень много методов (которые тянутся из прототипа).
(function () {
	// конструктор
	function DummyClass (prop) {
		this.someProperty = prop;
	}

	DummyClass.prototype = {
		// очень много разных методов
	}

	window.DummyClass = DummyClass;
})();

Вопрос: если я потом создам много экземпляров класса DummyClass, то сколько они отожрут памяти?
Мне так думается, что в соответствии с объемом свойств (плюс какие-то накладные расходы), а прототип хранится в один.
Но вдруг я неправ? Или в основном прав, но есть важные "нюансы"?
  • Вопрос задан
  • 196 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
DIITHiTech
@DIITHiTech
Fullstack javascript developer
КЭП подтверждает: хранение общих свойств в прототипе экономит память=)
А на вопрос сколько- ответит профайлинг консоли, хотя это не важно.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
прототип копируется

Свойства прототипа с вашими методоми будут ссылаться на них по ссылке, так что экономия памяти будет. Тут больше профита в увеличении производительности инстанцирования, так как вместо определения новых методов на каждый вызов конструктора, мы просто копируем объект со всеми ссылками.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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