Schließen sich die Pfeilfunktionen von ES6 immer noch über "this", auch wenn sie es nicht verwenden?
Ich versuche die Regeln zu verstehen, wannthis
ist in einer ES6-Pfeilfunktion lexikalisch gebunden. Schauen wir uns das zuerst an:
function Foo(other) {
other.callback = () => { this.bar(); };
this.bar = function() {
console.log('bar called');
};
}
Wenn ich ein @ konstruienew Foo(other)
, für dieses andere Objekt ist ein Rückruf festgelegt. Der Rückruf ist eine Pfeilfunktion und dasthis
in der Pfeilfunktion ist lexikalisch an das @ gebundFoo
Instanz, so dass dieFoo
wird kein Müll gesammelt, auch wenn ich keinen anderen Verweis auf das @ behalFoo
um
Was passiert, wenn ich das stattdessen mache?
function Foo(other) {
other.callback = () => { };
}
Jetzt habe ich den Rückruf auf NOP gesetzt und erwähne niethis
drin.Meine Frage ist bindet die Pfeilfunktion noch lexikalisch anthis
, das @ behaltFoo
lebend solangeother
lebt, oder darf dasFoo
Müll in dieser Situation gesammelt werden?