メソッド1:コンストラクタパターン

function Dog(name, breed){
  Animal.call(this, "dog");
  this.name = name;
  this.breed = breed;
}

で、

Animal.call(this, "dog");

は何をしているのでしょうか?

・なくても意味は通るようにも思うのですが…

http://postd.cc/javascript-inheritance-patterns/