Копия прототипа против Object.create () против нового

Я использовал наследование и заметил, что есть три способа получить один и тот же результат. Какая разница?

function Animal(){
}

Animal.prototype.doThat = function() {
    document.write("Doing that");
}

function Bird(){
}

// This makes doThat() visible
Bird.prototype = Object.create(Animal.prototype); // Solution 1
// You can also do:
// Bird.prototype = new Animal(); // Solution 2
// Or:
// Bird.prototype = Animal.prototype; // Solution 3

var myVar = new Bird();
myVar.doThat();

Как видите, я предложил три решения. Каждый из них делает метод doThat () видимым.

Если я прокомментирую их все, на самом деле ошибка.

Если я разлагаю только один из них, программа работает.

Итак ... в чем разница между тремя решениями?

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

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