Наследование прототипа, почему экземпляр, а не прототип?

С тех пор как я узнал о наследовании прототипов, я всегда задавался вопросом, почему вы вставляете экземпляр родительского класса в дочерний прототип, а не сам прототип?

var Animal = function(type){
    this.type = type;
}
Animal.prototype.getType = function(){
    return this.type;
}
var Cat = function(options){
    this.breed = options.breed;
}

//Inheritance
Cat.prototype = new Animal('Cat');

Почему бы не сделать это. такое наследование?

Cat.prototype = Animal.prototype;

Я предполагаю, что при наследовании только прототипа вы не включаете свойства, созданные в конструкторе (this.type), но я ' м не совсем уверен. Кто-нибудь хочет просветить меня?

Но разве размещение экземпляра в прототипе дочернего класса не помещает все свойства, определенные конструктором, в прототип и тем самым вводит возможные подводные камни? Я думаю о том, что свойства прототипа являются общими для всех экземпляров класса, если они не определены в конструкторе.

17
задан ChrisR 1 March 2012 в 21:30
поделиться