| 
 Наследование на основе прототипов 
function Parent() {
    this.a = [];
}
Parent.prototype.dd = function() {
    console.log('f parent');
};
var aa =  new Parent();
function ChildB() {
}
ChildB.prototype = aa;
ChildB.prototype.dd = function() {
    console.log('b child');
};
function ChildC() {
}
ChildC.prototype = aa;
ChildC.prototype.dd = function() {
    console.log('c child');
};
new ChildB().dd();
new ChildC().dd();
Читая статью о наследовании на основе прототипов я похоже что-то упустил. Подскажите что именно. Ожидалось что в консоле я увижу b child c child А в итоге я получил: c child c child | 
| 
 Цитата: 
 Цитата: 
 У тебя оба child'а в качестве прототипа имеют один и тот же объект. Ты просто перетираешь его свойства. Имена конструкторов принято записывать с большой буквы. | 
| 
 childB.prototype = new parent(); childC.prototype = new parent(); ; Подумал и подправил. Это правильное решение? | 
| 
 Цитата: 
 Корректней будет так: ChildC.prototype = Object.create(Parent.prototype); // по идее еще нужно переопределить свойство constructor Тогда в прототип не попадет свойство a = []. Оно там не нужно. Оно должно быть у каждого инстанса свое. Делается так: 
function ChildC() {
    Parent.call(this);
}
 | 
| 
 Цитата: 
 
function inherit(proto) {
    function F() {}
    F.prototype = proto;
    return new F;
}
Цитата: 
 | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Цитата: 
 ChildC.prototype = Object.create(Parent.prototype); При таком подходе получается наследование от Object. Я правильно понимаю? Цитата: 
 | 
| 
 Цитата: 
 Работает примерно как твой inherit. Цитата: 
 
if (!Object.create) {
    Object.create = function() { ... };
}
Цитата: 
 | 
| Часовой пояс GMT +3, время: 11:38. |