Имитация методов в Javascript - как они работают? - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в Javascript. Я видел такой код:

class Reservation extends React.Component {
  constructor(props) {
    super(props);
    this.handleInputChange = this.handleInputChange.bind(this);
  }

  handleInputChange(event) {...}
}

Насколько я могу судить по поиску, handleInputChange - это не метод, а отдельная функция, а bind делает его более похожим на метод. Может кто-нибудь объяснить больше о том, что происходит под капотом? Это что-то вроде этого?

  1. При создании Reservation объекта handleInputChange привязывается к новой лямбде.
  2. Код в конструкторе затем привязывает его к некоторому функциональному объекту, который упаковывает / модифицирует лямбду и связывает this внутри него.

Это единственный способ создать метод в JavaScript?

1 Ответ

0 голосов
/ 31 октября 2018

handleInputChange - это не метод, а отдельная функция

Методы - это просто функции, которые хранятся как свойства объекта.

bind делает его более похожим на метод.

В этом случае он будет действовать так, как если бы он был вызван как метод объекта , даже если он был скопирован в другое место (например, с someInput.addEventListener('change', this.handleInputChange)) и вызван в другом контексте.

Это единственный способ создать метод в JavaScript?

номер

const foo = new Reservation
foo.handleInputChange(...)

... будет работать нормально даже без переплета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...