Почему 1 и 2 алерт выводят undefined, а не значения?
Нужно вернуть значение из функции
return this._days; и return this._rate; в соответствующих функциях
Ну и на всякий случай: function BigAnimal() {
  this.name = "Мышь";
  return { name: "Годзилла" };  // <-- возвратим объект
}
alert( new BigAnimal().name );  // Годзилла, получили объект вместо this
И другой вариантfunction BigAnimal() {
  this.name = "Мышь";
  return "Годзилла"; // <-- возвратим примитив
}
alert( new BigAnimal().name ); // Мышь, получили this (а Годзилла пропал)
Следует использовать return для возвращения значения из функции