Есть след код, меня интересует, происходит ли в этом случае экономия памяти?
var Person = {
getName: function(){
return this.name;
},
bigMethod: function(){
// here some large code
}
};
var createPerson = function(obj){
var person = {};
person.getName = function(){
return Person.getName.call(obj);
};
person.bigMethod =function(){
return Person.bigMethod.call(obj);
};
return person;
}
var persons = [];
for (var i =0; i < 1000; i++){
persons.push(createPerson({name:'Gregory'}));
}
или же в принципе можно делать так:
var createPerson = function(obj){
var person = {};
person.getName = function(){
return obj.name;
};
person.bigMethod = function(){
// here some large code
};
return person;
}
var persons = [];
for (var i =0; i < 1000; i++){
persons.push(createPerson({name:'Gregory'}));
}
в первом случае я выделил реализацию некого гипотетического метода с длинным кодом в отдельный объект Person и вызываю его из createPerson. а во втором я просто создаю объект с нужными методами и возращаю объект.
так проверил с помощью профайлера Google Chrome результаты след и в 1-м и во 2-м случае размер памяти примерно одинаковый у меня это ~25 Mb на 100,000 объектов, а вот в случае прототипа значительно меншье ~6 Mb.
Думаю в моем случае, выноса реализации в отдельный метод, оптимизатор вызвращает обратно его в тело )) таким образом оптимизируя код, надо попробовать написать реальный большой метод по объему, и его тестировать.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости