Показать сообщение отдельно
  #7 (permalink)  
Старый 29.08.2019, 15:46
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

function User(name, date) {
  this.name = name;
  this.date = date;
}
User.prototype.getInfo = function () {
  return 'Name: "' + this.name + '" Date: "' + this.date + '"';
};

function Admin(name, date, rootAdmin) {
  User.call(this, name, date); // ну и тут можно на __proto__ заменить
  this.isRootAdmin = function () {
    return rootAdmin;
  };
}
Admin.prototype = Object.create(User.prototype);
Admin.prototype.constructor = Admin;
Admin.prototype.getInfoAdmin = function () {
  // если не переименовать getInfo будет Maximum callstack...
  return this.getInfo.call(this) // потому что будет проверять в __proto__, до тех пор пока не __proto__ ))
  // return this.__proto__.__proto__.getInfo.call(this) // это работает тоже
  // __proto__ раз - Admin, __proto__ два - User
}

const admin = new Admin('n', 'd', true)

console.log(admin.getInfoAdmin())


вообще __proto__ кто-то пользует? просто я пришел в js на es2015... и как-то не особо заморачиваюсь с этим прото и конструктор... потому что webpack сделает как надо, наверное...
Ответить с цитированием