2017-03-28 7 views
0

Ich habe eine Pfeilfunktion, die ich mit call() ausführen möchte. Aus Gründen der Vereinfachung wie folgt:Übergabe von .call() zu Pfeilfunktion

Operational als erwartet

const func = (e) => { 
    console.log(e) 
} 

func.call(null, e) 

Hmm ... was ist denn hier los?

Ich würde erwarten, dass der folgende Code element in func als this übergibt.

const func = (e) => { 
    console.log(this) 
    console.log(e) 
} 

func.call(element, e) 

Aber statt this bleibt undefined.

Wenn ich es zu einer regulären Funktionsdefinition wechseln, funktioniert alles wie erwartet.

const func = function (e) { 
    console.log(this) 
    console.log(e) 
} 

func.call(element, e) 

Frage

Warum bin ich für this in einen Pfeil Funktion von call() einen Kontext passieren nicht in der Lage?

+0

Aus Interesse, warum haben Sie sich entschieden, eine Pfeilfunktion anstelle einer regulären Funktion zu verwenden? – CodingIntrigue

+0

@CodingIntrigue Kein Grund, rein experimentell, wo ich dieses Verhalten bemerkt habe. –

Antwort

1

In ES6 this hat lexical scope Bedeutung Wert von this innerhalb Pfeil Funktion wie die außerhalb des Pfeils Funktion gleiche wäre. In Pre-ES6-Formular this ist das Objekt, das Sie als erstes Argument an call Methode übergeben.

+0

Danke. Hilfreiche Links. –