Я пытаюсь понять правила, когда this лексически привязана к функции со стрелкой ES6. Давайте сначала посмотрим на это:
function Foo(other) {
other.callback = () => { this.bar(); };
this.bar = function() {
console.log('bar called');
};
}
Когда я создаю a new Foo(other), обратный вызов устанавливается на этом другом объекте. Обратный вызов - это функция стрелки, а this в функции стрелки лексически привязана к экземпляру Foo, поэтому Foo не будет собираться мусором, даже если я не буду ссылаться на ссылку Foo вокруг.
Что произойдет, если я сделаю это вместо этого?
function Foo(other) {
other.callback = () => { };
}
Теперь я установил обратный вызов на nop, и я никогда не упоминаю this в нем. Мой вопрос: работает ли функция стрелки по-лексически привязана к this, сохраняя Foo до тех пор, пока other жив, или может Foo быть мусором, собранным в этой ситуации