@lekbekmek
Full stack web developer

Как лучше конструировать объекты для оптимизации памяти?

Привет всем.
Необходимо создавать элементы и хранить их в памяти для последующего конструирования из них блоков html.

Вижу 2 подхода.
Первый
function inputClass(id)
{
this.id = id;

function log(){
console.log(this.id);
};

this.log = log;
}

Тогда при создании через new inputClass("first") получаем объект, имеющий:
id: "first"
log: log()
__proto__: inputClass


И второй вариант
function inputClass(id)
{
this.id = id;
}
inputClass.prototype.log = function log(){
console.log(this.id);
};


Тогда имеем объект, созданный через new inputClass("second") и имеющий:
id: "second"
__proto__: inputClass


Функция log в данном случае одна и та же для всех создаваемых объектов.
Но в первом варианте она копируется в каждый из объектов, а во втором - хранится только в прототипе.

Правильно ли я понимаю, что чем больше объектов, тем больше экономим память во втором случае(через prototype)?
Есть ли подводные камни в данной ситуации, и есть ли способы еще оптимальнее?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Правильно ли я понимаю, что чем больше объектов, тем больше экономим память во втором случае(через prototype)?


Правильно я понимаю, что чем меньше места в шкафу, тем больше в него вещей влезет?


Как раз таки во втором случае объектов меньше (одинаковых по сути функций меньше. Да, функция - объект). Подводных камней нет.

На днях эту тему обсуждали: В чем различия этих конструкций в JavaScript?

__proto__: inputClass

__proto__ - это ссылка на inputClass.prototype, а не на сам конструктор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы