Почему мы должны расширять класс только через прототип?
Заметил такой пример:
Number.prototype.times = function(f, context) {
let n = this.valueOf();
for (let i = 0; i < n; i++) f .call (context, i);
};
Почему мы должны лезть в прототип класса Number, а не расширять прямо сам класс?
Ответы (1 шт):
Автор решения: NaClnik
→ Ссылка
Если мы будем добавлять метод times напрямую в функции-конструкторе this.func_name = function(){...}, то у каждого объекта этого класса будет собственный метод times. Так вот, чтобы поберечь оперативную память и не создавать в каждом экземпляре новую функцию, мы определяем её на прототипе и теперь, так как прототип существует в единственном экземпляре, наша функция тоже будет в единственном экземпляре.