2016-06-01 7 views
4

Es ist mein Verständnis, dass dies nicht funktioniert (dies ist ein konstruiertes Beispiel - siehe die RxJS für das, was ich eigentlich laufen bin):dieser Bereich in Pfeilfunktionsprototypen

function Foo() { 
    this.name = 'Johnny Cash' 
} 

Foo.prototype.who =() => { 
    console.log(this.name) // undefined 
}; 

var foo = new Foo(); 

foo.who() 

Als this muß nicht den richtigen Rahmen . Jedoch this Seite (die letzten 2 unteren Beispiele) auf RxJS-Dokumente verwenden Sie es. Wie laufen sie diesen Code?

Ist der Code auf der RxJS-Seite falsch? oder muss ich eine Art von Babel-Plugin durchlaufen (ich habe bereits versucht, durch babel-require und babel-polyfill mit demselben Effekt zu laufen)

+1

'Foo' und' Emitter' sind in diesem Beispiel völlig unabhängig voneinander. Es ist in vielerlei Hinsicht möglich, "foo" mit "this" zu verbinden, wobei "Emitter.prototype.who.call (foo)" am einfachsten ist. Darüber hinaus ist es ziemlich unklar, was Sie fragen. – deceze

+1

Hier gibt es auch keine einzige "Pfeilfunktion". – deceze

+0

Lo.l. Mein Fehler. Ich habe versucht, ein Beispiel zu finden. Tippfehler behoben – cyberwombat

Antwort

2

Beispiele auf dieser Seite sind kaputt.

Es wäre fair, es zu übernehmen war nie, wie es läuft zur Zeit gebucht wird, da es die Syntaxfehler in der

var subcription = emitter.listen('data', data => console.log(`data: ${data}`); 

Linie

(nicht Klammer gepaart).

Nachdem es behoben ist und ausgeführt - gibt es andere Ausnahmen über das Lesen von Eigenschaften von undefined, die this innerhalb der oben genannten Pfeil Funktionen ist.

+0

Danke. Ich habe das genauso vermutet. Wollte nur eine Bestätigung – cyberwombat

+1

@ Yashua nach einem zweiten Blick Ich habe festgestellt, dass ich * weiß * der Autor, und ich schickte ihnen nur einen Link zu dieser Frage :-) – zerkms

+0

Cool. Schön! – cyberwombat