Задать вопрос
@daxak

Зачем здесь bind?

let user = {
  name: "Вася",
  _password: "***",
  a() {
    console.log('123');
  }
};
user = new Proxy(user, {
  get(target, prop) {
    if (prop.startsWith('_')) {
      throw new Error("Отказано в доступе");
    } else {
      let value = target[prop];
      return (typeof value === 'function') ? value.bind(target) : value; // (*)
    }
  }
})

Зачем проверка на функцию и потом bind?
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
Ты затронул тему Proxy не разобравшись с контекстом, областью видимости и потерей контекста.
У объекта могут быть как property так и методы
так вот проверка на функцию это как раз проверка что это проперти или метод. Привязка контекста делается потому что если вызвать метод без родителя, то ты потеряешь контекст.
Чтобы понять напиши в console.log('123');console.log('123', this);
а потом вызови с bind и без него ну и для чистоты експеримента удали все что связано с Proxy и просто вызови user.a()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы