Size: a a a

2021 January 05

DM

Denys Mikhalenko in javascript_ru
отсюда можно легко понять, почему нельзя сделать bind еще раз
источник

DM

Denys Mikhalenko in javascript_ru
т.к. в итоге все равно вызовется самый первый foo.call() и this будет то, что ты передал в первом bind в качестве аргумента
источник

DM

Denys Mikhalenko in javascript_ru
а все предыдущие значения просто пропадут зря )
источник

DM

Denys Mikhalenko in javascript_ru
и кстати, насчет arrow functions - стрелочных функций
источник

w

whyamsx in javascript_ru
у них нет this да?
источник

DM

Denys Mikhalenko in javascript_ru
Можете представлять себе, что если вы пишете
() => { ... }
, то на самом деле это все равно, что вы написали
(function() { ... }).bind(this)
источник

DM

Denys Mikhalenko in javascript_ru
то есть возьмется значение this в том месте, где вы создаете эту стрелочную функцию и с помощью bind прибьется гвоздями к нашей вновь созданной )
источник

DM

Denys Mikhalenko in javascript_ru
А как мы знаем, последующими вызовами bind не получится изменить контекст уже, поэтому принято считать, что у стрелочных функций он не работает )
источник

DM

Denys Mikhalenko in javascript_ru
Ну, он как бы работает канеш, просто уже поздно )
Она уже привязана к контексту
источник

DM

Denys Mikhalenko in javascript_ru
Я все
Надеюсь было интересно 😊
источник

w

whyamsx in javascript_ru
Денис еще вопрос
источник

w

whyamsx in javascript_ru
В таком случае к test тоже не применяется новый бинд?
источник

DM

Denys Mikhalenko in javascript_ru
не применяется конечно
источник

DM

Denys Mikhalenko in javascript_ru
твоя строка
const test = (text) = { console.log(text) }
это по факту
const test = (function(text) { console.log(text) }).bind(this)
источник

DM

Denys Mikhalenko in javascript_ru
это все конечно не так делается в самом движке, это я для понимания объясняю )
источник

w

whyamsx in javascript_ru
теперь точно понял
источник

DM

Denys Mikhalenko in javascript_ru
на пальцах (tm)
источник

DM

Denys Mikhalenko in javascript_ru
ты понимаешь, почему bind больше 1 раза уже не сработает?
источник

DM

Denys Mikhalenko in javascript_ru
допустим у тебя ест функция
function foo() {
 console.log(this)
}
если ты сделал foo.bind('hello'), то ты получишь новую функцию
function bound() {
 foo.call('hello')
}
источник

w

whyamsx in javascript_ru
понял
источник