Inherit() в javascript

Рейтинг: 0Ответов: 1Опубликовано: 22.01.2015

Вот есть такой код:

 var q = {v:1, s:5};
var p = {};
p = inherit(q);
alert(p);

Я так понял, что функцией inherit я говорю объекту p, что нужно наследовать свойства q.v и q.s - ведь так? Почему эта строка так упорно выдаёт ошибку? Я так понял, inherit просто наследут свойства, разве нет?

Страница 145 - Жэвид флэнаган. JS подробное руководство 6-е издание.
var o = {} // o наследует методы объекта Object.prototype
o.x = 1; // и обладает собственным свойством x.
var p = inherit(o); // p наследует свойства объектов o и Object.prototype
p.y = 2; // и обладает собственным свойством y.
var q = inherit(p); // q наследует свойства объектов p, o и Object.prototype
q.z = 3; // и обладает собственным свойством z.
var s = q.toString(); // toString наследуетсяот Object.prototype
q.x + q.y // => 3: x и y наследуются от o и p

Ответы

▲ 1

В js нет такой функции, как inherit, функция inherit это fallback для Object.create:

var o = {} // o наследует методы объекта Object.prototype
    o.x = 1; // и обладает собственным свойством x.
    var p = Object.create(o); // p наследует свойства объектов o и Object.prototype
    p.y = 2; // и обладает собственным свойством y.
    var q = Object.create(p); // q наследует свойства объектов p, o и Object.prototype
    q.z = 3; // и обладает собственным свойством z.
    var s = q.toString(); // toString наследуетсяот Object.prototype
    q.x + q.y // => 3: x и y наследуются от o и p
    console.log( q.__proto__ ); // смотрим прототип

Вот так можно реализовать inherit:

function inherit( obj ) {
 function F () {};
 F.prototype = obj;
 return new F();
}