Я прочитал, что добавление функций к объекту потребует больше памяти, чем добавление функций к прототипу объекта.
function Obj() {
this.M = function() { // do something };
}
var o = new Obj();
Идея заключалась в том, что для каждой конструкции Obj создается новая функцияи применяется к Obj, тем самым увеличивая использование памяти.Для 1000 экземпляров Obj необходимо создать 1000 функций.
function Obj() {
}
Obj.prototype.M = function() { // do something };
var o = new Obj();
В этом случае для 1000 экземпляров Obj создается только одна функция.Чистая полная экономия памяти размером 999 * (M).
Это действительно так?Если это так, к какой категории относится следующая категория:
function Obj() {
Obj.prototype.M = function() { // do something };
}
var o = new Obj();
Мои инстинкты говорят мне, что для каждой конструкции Obj в этом примере прототип будет назначаться каждый раз.Я не уверен, что думать об использовании памяти в этом случае, поскольку назначение той же функции прототипу просто заменило бы функцию вместо создания N ее копий для N экземпляров.
Я только начал использоватьэтот метод для инкапсуляции создания функций-членов, но хочу быть уверен, что я не делаю неправильных вещей.