You should add one line of code after setting a prototype that returns constructor to correct state
Animal.prototype = Object.create(Creature.prototype);
Animal.prototype.constructor = Animal; // this
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog; // and this