function Animal(name, sound) {
this.name = name;
this.sound = sound;
}
Animal.prototype.say = function() {
console.log('%s says %s', this.name, this.sound);
};
function Cat() {
Animal.call(this, "cat", "meow");
}
Cat.prototype = new Animal();
// Cat.prototype = Animal.prototype;
// Cat.prototype = Object.create(Animal.prototype);
var cat = new Cat();
cat.say(); // cat says meow
console.log(cat instanceof Cat); // true
console.log(cat instanceof Animal); // true
console.log(cat.constructor.name); // "Animal"?!
function inherit(Child, Parent) {
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
Child.prototype.super = function() {
Parent.apply(this, arguments);
};
}
function Dog() {
this.super("dog", "woof");
}
inherit(Dog, Animal);
var dog = new Dog;
dog.say();
console.log(dog.constructor.name);
Это код просто для примера. Мне непонятно почему при наследовании предпочтительнее делать `Child.prototype = Object.create(Parent.prototype)` вместо простого `Child.prototype = new Parent()`?