@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?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
Ты затронул тему Proxy не разобравшись с контекстом, областью видимости и потерей контекста.
У объекта могут быть как property так и методы
так вот проверка на функцию это как раз проверка что это проперти или метод. Привязка контекста делается потому что если вызвать метод без родителя, то ты потеряешь контекст.
Чтобы понять напиши в console.log('123');console.log('123', this);
а потом вызови с bind и без него ну и для чистоты експеримента удали все что связано с Proxy и просто вызови user.a()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект
28 нояб. 2024, в 17:38
12000 руб./за проект