Size: a a a

2020 December 18

AN

Anton Nemtsev in Frontend UA
Спасибо. Это прояснило для меня ситуацию.
источник

EO

Eugene Obrezkov in Frontend UA
Anton Nemtsev
эээ …  то-есть у стрелочных ф-й он «зашивается» в момент создания а this из bind и call просто игнорируются?
не игнорируются, а просто не могут изменить
источник

EO

Eugene Obrezkov in Frontend UA
т.к. там уже есть бинд
источник

VS

V7v S6k in Frontend UA
this для r це просто змінна, така сама як a в цьому прикладі:


class Xo {
   constructor () {
       this.a = 1;
       r = ()=>{console.log(this.a)};
       m = r.bind('carrot'); // можно просто объект или window
   }
}
источник

E

Evgen in Frontend UA
А ты какой результат ожидал?
источник

AN

Anton Nemtsev in Frontend UA
V7v S6k
this для r це просто змінна, така сама як a в цьому прикладі:


class Xo {
   constructor () {
       this.a = 1;
       r = ()=>{console.log(this.a)};
       m = r.bind('carrot'); // можно просто объект или window
   }
}
Uncaught ReferenceError: a is not defined
   at r (<anonymous>:5:30)
   at <anonymous>:1:1
источник

VS

V7v S6k in Frontend UA
Anton Nemtsev
Uncaught ReferenceError: a is not defined
   at r (<anonymous>:5:30)
   at <anonymous>:1:1
* this.a
источник

AN

Anton Nemtsev in Frontend UA
V7v S6k
* this.a
Спасибо за пояснение. Я понял как это работает.
источник

AN

Anton Nemtsev in Frontend UA
Evgen
А ты какой результат ожидал?
источник

EO

Eugene Obrezkov in Frontend UA
const r = fn.bind(A).bind(B)
источник

AN

Anton Nemtsev in Frontend UA
Evgen
А ты какой результат ожидал?
Но уже всё понятно.
источник

EO

Eugene Obrezkov in Frontend UA
второй бинд не сработает, потому что уже есть первый
источник

VS

V7v S6k in Frontend UA
Anton Nemtsev
Спасибо за пояснение. Я понял как это работает.
ось кращий приклад

const obj = { a: 1, b: function() { return () => [this, this.a] } }

obj.b()()
источник

EO

Eugene Obrezkov in Frontend UA
вот в случае с arrow function у неё implicit bind
источник

AN

Anton Nemtsev in Frontend UA
Eugene Obrezkov
const r = fn.bind(A).bind(B)
ДВОЙНОЙ БАИНД НЕ РАБОТАЕТ?! 0____0
[убежал пробовать]
источник

VS

V7v S6k in Frontend UA
якби я написав  b: () => [this, this.a],  то було б window
источник

E

Evgen in Frontend UA
Хм, а чего ожидал window, если байндишь на строку?
источник

VS

V7v S6k in Frontend UA
Eugene Obrezkov
вот в случае с arrow function у неё implicit bind
та ні, arrow функція просто бере біндинг this із enclosing object, як і будь-які інші біндинги які їй доступні, все explicit
источник

EO

Eugene Obrezkov in Frontend UA
Anton Nemtsev
ДВОЙНОЙ БАИНД НЕ РАБОТАЕТ?! 0____0
[убежал пробовать]
bind контекст держит в скоупе и возвращает функцию, которая через apply пробрасывает контекст. Поэтому второй bind и не сработает, т.к. там в скоупе уже лежит
источник

VS

V7v S6k in Frontend UA
источник