Ответ 1
Вы правы, но теперь в 5-м выпуске ECMAScript метод Object.create
способен создавать экземпляры объектов с использованием других объектов в качестве прототипа:
var proto = {foo: 1};
var obj = Object.create(proto);
В приведенном выше примере будет создан obj
и он будет содержать ссылку на proto
в внутреннем свойстве [[Prototype]]
и:
obj.foo; // 1
obj.hasOwnProperty('foo'); // false
Этот метод получен из новой спецификации, утвержденной в декабре 2009 года, насколько я уже видел сейчас, на Mozilla JavaScript 1.9.3 реализация.
Теперь вы можете имитировать поведение этого метода, как это предложено Дуглас Крокфорд:
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}