tgoop.com/prog_way_blog/114
Create:
Last Update:
Last Update:
Методы управления контекстом вызова
Ранее мы разбирали что такое this и там я пообещал рассказать о методах call
, apply
и bind
. Этот пост как раз об этом.
Итак, все эти 3 метода созданы для управления контекстом вызова функции. Давайте рассмотрим пример:
const person = {
name: "Deins",
greet(greeting = 'Hi') {
console.log(`${greeting}, ${this.name}`)
}
}
const channel = {
name: "progway"
}
// Hi, Denis
person.greet()
// Hello, progway
person.greet.call(channel, 'Hello')
// Привет, Денис
person.greet.apply({name: 'Денис'}, ['Привет'] )
const greetMax =
person.greet.bind({name: "Макс"}, 'Привет')
// Привет, Макс
greetMax()
Без кода всё равно не разобраться.
У объекта
person
есть метод greet
, который за контекст вызова берёт как раз объект person
. Но если мы хотим применить к этому методу другой контекст, например созданный заранее объект channel
или новый произвольный объект, то необходимо использовать вышеописанные 3 метода.call
, apply
— применяют новый контекст к функции, принимая новый контекст первым параметром, а далее вызывают функцию с указанными аргументами. call
принимает аргументы функции через запятую, а apply
принимает их списком. Это основное отличие между этими двумя методами.bind
— так же применяет контекст и через запятую принимает параметры для вызова, НОСамым важным отличием является то, что методы
apply
и call
сразу же вызывают функцию и возвращают её результат, а метод bind
создает новую функцию относительно аргументов и контекста, но не вызывает её. Такую функцию мы можем сохранить в переменную и вызвать позже.Такие манипуляции встречаются часто, но для чего именно они нужны мы тут разбирать не будем, оставим это на потом.
И на этом пока всё. Спасибо за прочтение, это важно для меня.
#javascript #theory
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/114