getInfo здесь вообще не в тему, сам по себе экземпляр класса это уже и есть то самое Info, также не понятно зачем аргумент validDate, ну и в User.call не надо все arguments, а только отнаследованные.
function User(name, date) {
this.name = name;
this.date = date;
}
function Admin(name, date, isRootAdmin) {
User.call(this, name, date);
this.isRootAdmin = isRootAdmin;
}
Admin.prototype = Object.create(User.prototype);
Admin.prototype.constructor = Admin;
function Guest(name, date) {
User.call(this, name, date);
this.validDate = new Date(date.getTime());
this.validDate.setDate(date.getDate() + 7);
}
Guest.prototype = Object.create(User.prototype);
Guest.prototype.constructor = Guest;
var guest = new Guest('Guest1', new Date);
console.log(guest);
И это старая школа, а const это новая и там есть class:
class User {
constructor(name, date) {
this.name = name;
this.date = date;
}
}
class Admin extends User {
constructor(name, date, isRootAdmin) {
super(name, date);
this.isRootAdmin = isRootAdmin;
}
}
class Guest extends User {
constructor(name, date) {
super(name, date);
this.validDate = new Date(date.getTime());
this.validDate.setDate(date.getDate() + 7);
}
}
let guest = new Guest('Guest1', new Date);
console.log(guest);