Можешь попробовать вот такую парашу:
extend=function(src, trg){for(var i in src) trg[i]=src[i]}
function Db(ob){
extend(ob, this)
return this
}
Db.prototype.foo=1
Db.prototype.bar=1
Db.prototype.baz=1
dbs={
list: [
{foo: 10},
{foo: 100, bar: 10}
]
}
for(var i in dbs.list) dbs.list[i]=new Db(dbs.list[i])
console.log(
dbs.list[0].foo,
dbs.list[0].bar,
dbs.list[0].baz,
dbs.list[1].foo,
dbs.list[1].bar,
dbs.list[1].baz,
dbs.list[0].constructor,
dbs.list[1].constructor,
dbs.list[0].hasOwnProperty("foo"),
dbs.list[0].hasOwnProperty("bar"),
dbs.list[0].hasOwnProperty("baz"),
dbs.list[1].hasOwnProperty("foo"),
dbs.list[1].hasOwnProperty("bar"),
dbs.list[1].hasOwnProperty("baz")
)
// 10 1 1 100 10 1 [Function: Db] [Function: Db] true false false true true false
Так у тебя восстановится вся иерархия. Но по-хорошему, следовало бы сраным комитетчикам яйца оторвать. __proto__ , в общем случае, без бубнов, ничем не заменишь, это сердце языка, блять. Вроде, какой то setPrototypeOf обещают, посмотрим.