2016-08-10 2 views
2

Momentan arbeite ich an Learning React und Redux. Ich habe einen Textbaustein gefunden, und ich arbeite daran, den gesamten Beispielcode durchzusehen. Mein Problem ist, dass ich nicht ganz verstehe, was eine Menge dieser ES6-Syntax bedeutet.Unbekannt Bedeutung von ES6 Syntax

Was ich bisher gelernt habe, ist, dass hello =() => "Hello"; zu entsprechen würde:

hello = function hello() { 
    return "Hello"; 
}; 

dann die oben hello = name => "Hello " + name; Wechsel konvertieren würde:

hello = function hello(name) { 
    return "Hello " + name; 
}; 

Das alles macht absolut Sinn, im Grunde Es verkürzt es nur, so dass Sie die Funktion und ihre Rückgabeanweisung nicht schreiben müssen. Ich bin jedoch auf eine Syntax gestoßen, mit der ich mich nicht herumschlagen kann. Es ist wie folgt:

const mapActionCreators = { 
    increment:() => increment(1), 
    doubleAsync 
} 

Der obige Code umgewandelt wird:

var mapActionCreators = { 
    increment: function (_increment) { 
    function increment() { 
     return _increment.apply(this, arguments); 
    } 

    increment.toString = function() { 
     return _increment.toString(); 
    }; 

    return increment; 
    }(function() { 
    return increment(1); 
    }), 
    doubleAsync: doubleAsync 
}; 

Ich verstehe, dass () => increment(1) in diesem Fall um die gedreht wird:

(function() { 
    return increment(1); 
}), 

Insgesamt denke, ich meine Frage ist, Wie wird increment: in konvertiert werden:

increment: function (_increment) { 
    function increment() { 
     return _increment.apply(this, arguments); 
    } 

    increment.toString = function() { 
     return _increment.toString(); 
    }; 

    return increment; 
} 

Was bedeutet der Code?

Antwort

6

Pfeil Funktionen erfassen den Wert der this vom Umfang sie erstellt werden.

apply können Sie eine Funktion aufrufen und explizit den Wert von this darin.

Der Rest des Codes füttert nur die korrekte this der Funktion.

(Und toString stellt sicher, dass die rechts Funktion wird beschriftet, wenn Sie versuchen, die generierte Funktion zu string).