Проблема здесь Dog.prototype = Object.create(Mammal.prototype);
Попытайся
[Редактировать]
function Mammal() {}
function Dog() {}
Mammal.prototype.walk = function () {
console.log( 'walking..walking....' );
};
Dog.prototype.bark = function () {
console.log( 'wof wof!' );
};
[/ Редактировать]
let describe = Object.getOwnPropertyDescriptor;
let descriptor = Object.keys( Mammal.prototype ).reduce( function ( desc, key ) {
desc[key] = describe( Mammal.prototype, key );
return desc;
}, {} );
Dog.prototype = Object.create( Dog.prototype, descriptor );
[Редактировать]
Dog.prototype.constructor = Dog;
let dogInstance = new Dog();
dogInstance.walk();
dogInstance.bark();
Или использовать Наследование объектов следовать этому
function Mammal( key ) { this.key = key; }
function Dog() {
Mammal.call( this, "Dog" );
}
Dog.prototype = Object.create( Mammal.prototype );
Dog.prototype.bark = function () {
console.log( 'wof wof!' );
};
Mammal.prototype.walk = function () {
console.log( 'walking..walking....' );
return `${this.key} from Mammal.`;
};
Dog.prototype.constructor = Dog;
let dogInstance = new Dog();
dogInstance.walk();
dogInstance.bark();
Сравнить dogInstance
Mammal.prototype.isPrototypeOf( dogInstance );
Dog.prototype.isPrototypeOf( dogInstance );
Это работа для меня: (
[/ Edit]