@jwwwe

Как привязать функцию к контексту объекта, если функция объявлена и вызвана в контексте другой функции?

Всем привет. Пытаюсь понять тонкости ООП. Сейчас главное недопонимание как привязать функцию rangeEnd к объекту. Делал через стрелочные функции, с ними все было нормально тк они не имеют своего this, это я понял, но почему я не могу привязать rangeEnd к объекту? Я думаю, что моя ошибка в том, что привязываю ее к контексту handlerClick, а как привязать ее к объекту? Самое главное условие в том, что функция должна быть объявлена и вызвана внутри функции handlerClick.

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isOpened: false
    };
  };
  handlerClick(event) {
    function rangeEnd(thisPage) {
      let end = thisPage + 2;
      return (end <= totalPages) ? end : thisPage;
    }
    this.rangeEnd.bind(this, 5)
  }
}
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
HalfBloodPrince
@HalfBloodPrince
Front-End Developer
А что handlerClick возвращает? В любом случае, я так понимаю, что должно быть так:
// в конструкторе
    this.handlerClick = this.handlerClick.bind(this);
// в функции handlerClick 
rangeEnd.bind(this, 5);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@holymotion
class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isOpened: false
    };
  };
  handlerClick(event) {
    function rangeEnd(thisPage) {
      let end = thisPage + 2;
      return (end <= totalPages) ? end : thisPage;
    }
    rangeEnd.bind(this); 
  }
}
Ответ написан
Комментировать
Ты привязываешь, но не вызываешь, а вообще задача дикая, создать функцию внутри метода инстанса, внутри ссылаться на проперти инстанса, не проще ли сделать эту функцию еще одним методом этого инстанса?
https://jsfiddle.net/44rg8hjk/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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