2016-06-01 6 views
1

Ich habe folgende 2 Aussagen:dieses Schlüsselwort verhält differenty in Pfeil Funktionen und normalen Funktionen

Ohne Pfeil funktions-

var cell = svg.selectAll("g") 
    .data(nodes) 
    .enter().append("svg:g") 
    .attr("class", "cell") 
    .on("click", (d) => { 
      console.log(d); 
      zoomIn(d,this); 
    }); 

Mit Pfeil funktions-

var cell = svg.selectAll("g") 
    .data(nodes) 
    .enter().append("svg:g") 
    .attr("class", "cell") 
    .on("click", function(d) { 
      console.log(d); 
      zoomIn(d,this); 
    }); 

Die erste gibt a window Objekt in this während der zweite gibt das Objekt von attr() zurückgegeben. Ich habe darüber gelesen here. Gibt es eine Möglichkeit, das Objekt anstelle des window Objekts mithilfe von Pfeilfunktionen zu binden.

+0

Wenn Sie dynamische 'this' möchten, verwenden Sie' function', dafür ist es da. – 1983

Antwort

2

Nein, Pfeilfunktionen können nicht verknüpft werden, da sie dies einfach nicht im Gültigkeitsbereich definieren, sondern nur aus dem äußeren Bereich.

Abhängig davon, welchen Wert dies im äußeren Bereich hat, wird dieser Wert innerhalb der Funktion verwendet. In Ihrem Fall scheint es ein Fensterobjekt zu sein.

Dies unterscheidet sich nicht wesentlich von der Verwendung anderer Variablen aus dem äußeren Bereich.

Verwandte Themen