Зачем здесь применяется функция apply?

Как правильно изменить код, чтобы функция `logPerson` правильно выводила информацию о каждом объекте `Person` при вызове функции `bind`?
  • 16 апреля 2024 г. 6:10
Ответы на вопрос 2
Функция apply применяется здесь для вызова функции `logPerson` с передачей объекта `Person` в качестве аргумента. В данном случае, функция `bind` используется для установки контекста вызова функции `logPerson`.

Чтобы функция `logPerson` правильно выводила информацию о каждом объекте `Person` при вызове функции `bind`, необходимо изменить следующим образом:

```javascript
function logPerson() {
  console.log(`${this.name} ${this.age}`);
}

const person1 = {
  name: 'John',
  age: 30,
};

const person2 = {
  name: 'Jane',
  age: 25,
};

logPerson.apply(person1);
logPerson.apply(person2);
``` 

В этом случае, используется метод `apply`, чтобы передать объект `Person` в качестве контекста вызова функции `logPerson`. Теперь при вызове `logPerson.apply(person1)` и `logPerson.apply(person2)` функция `logPerson` будет правильно выводить информацию о каждом объекте `Person`.
Ну смотри logPerson функция, к которой привязывается контекст посредством .apply, чтобы this, скажем так ссылался на объект Person1(Кстати по договоренности, с большой буквы называются классы, это так для справки). <br/> <br/> Конкретно в этом примере, можно было в функцию передать Person1 <br/> <pre><code class="javascript">function logPerson(person) {
  console.log(Person ${person.name}, ${person.age}, ${person.job})
}</code></pre> <br/> <br/> Можете использовать .call или bind, bind не вызывает функцию после привязки контекста, а call отличается от apply что в apply аргументы передаются в виде массива, в call как в обычную функцию <br/> <br/> но в целом, функция bind является так скажем узлом, в котором callback function привязывается к контексту (объекту). Не похоже на prod реализацию, просто тренировочный пример возможно
Похожие вопросы