Я пытаюсь найти наиболее эффективный способ создания нового экземпляра объекта.
Когда я начал, я использовал что-то вроде этого:
var Foo = function(a, b, c)
{
this.a = a;
this.b = b;
this.c = c;
}
Foo.prototype.func = function()
{
// Do stuff;
}
var bar = new Foo(1, 2, 3);
bar.func();
Впоследствии я услышал, что будет лучше пропустить прототип, потому что новые прототипы будут использовать ненужную память, получая что-то вроде этого:
var Foo = function(a, b, c)
{
return {
a:a,
b:b,
c:c,
func:function()
{
// Do stuff;
}
}
}
var bar = Foo(1, 2, 3);
bar.func();
Однако теперь у меня проблема с созданием одной и той же функции несколько раз при вызове нескольких экземпляров Foo ... так как насчет ...
var Foo = {
a:null,
b:null,
c:null,
func: function()
{
// Do stuff;
}
}
function newFoo(a, b, c)
{
var tmp = function(){};
var obj = new tmp();
obj.prototype = Foo;
obj.a = a;
obj.b = b;
obj.c = c;
return obj;
}
var bar = newFoo(1, 2, 3);
bar.func();
Но теперь я получил прототип обратно ...
Я ищу здесь скорость, это моя главная забота. Рассматриваемые объекты не слишком сложны, в основном это набор атрибутов и функций. Объекты можно создавать и разрушать в быстром темпе (именно поэтому важна скорость)
Кто знает, что самый эффективный метод для этого?