Переопределение методов в Javascript

Я хотел бы знать, в чем разница между переопределением методов с прототипами и без прототипов. Рассмотреть возможность:

Пример 1:

function Animal() {
    this.sleep = function () {
        alert("animal sleeping");
    };

    this.eat = function () {
        alert("animal eating");
    };
}

function Dog() {
    this.eat = function () {
        alert("Dog eating");
    };
}

Dog.prototype = new Animal;

var dog = new Dog;

dog.eat();

Пример 2:

function Animal() { }

function Dog() { }

Animal.prototype.sleep = function () {
    alert("animal sleeping");
};

Animal.prototype.eat = function () {
    alert("animal eating");
};

Dog.prototype = new Animal;

Dog.prototype.eat = function () {
    alert("Dog eating");
};

var dog = new Dog;

dog.eat();

Я чувствую, что оба примера дают тот же эффект, чтоDog класс переопределяет метод естьAnimal класс. Или происходит что-то другое?

Ответы на вопрос(4)

Ваш ответ на вопрос