Почему мы должны расширять класс только через прототип?

Заметил такой пример:

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. Так вот, чтобы поберечь оперативную память и не создавать в каждом экземпляре новую функцию, мы определяем её на прототипе и теперь, так как прототип существует в единственном экземпляре, наша функция тоже будет в единственном экземпляре.

→ Ссылка