2017-07-28 3 views
-2

I ES6 so habe ich Babel, um diesen Code zu kompilieren, zu lernen, gerade erst begonnen, aber wenn ich this Schlüsselwort auf eine Variable in einer Prototyp-Methode weise es undefinedWarum übersetzt Babel 'this' Schlüsselwort als undefined innerhalb einer Prototyp-Funktion?

ist dies ein Fehler kompiliert? oder ein Problem mit meinem Code?

ES6-Code

function Prefixer(prefix) { 
    this.prefix = prefix; 
} 

Prefixer.prototype.prefixArray = arr => { 
    let self = this; 
    return arr.map((x) => { 
     console.log(self.prefix + x); 
    }); 
} 

var pre = new Prefixer("Hello "); 
pre.prefixArray(['Jeeva', 'Kumar']); 

Babel Compiled-Code

'use strict'; 

function Prefixer(prefix) { 
    this.prefix = prefix; 
} 

Prefixer.prototype.prefixArray = function (arr) { 
    var self = undefined; 
    return arr.map(function (x) { 
     console.log(self.prefix + x); 
    }); 
}; 

var pre = new Prefixer("Hello "); 
pre.prefixArray(['Jeeva', 'Kumar']); 

Code Snippet Screenshot

+2

Hallo, und willkommen zu Stack Overflow. Bitte beachten Sie, dass wir Code in Bildern sehr ablehnen und lieber Code haben, den wir tatsächlich kopieren und einfügen oder sogar ausführen können. Code mit vier Leerzeichen einrücken, um ihn als Code anzuzeigen. Sie können dies automatisch tun, indem Sie Ihren Code visuell auswählen und dann "Strg-K" (oder "Cmd-K" auf dem Mac) drücken. – Amadan

+1

Da Sie eine Pfeilfunktion verwenden, wird 'this 'vom definierenden Bereich geerbt. Sie sollten ** nicht ** Pfeil-Funktionen für Prototyp-Methoden verwenden – Phil

+0

Oh ok, so gibt es eine Einschränkung mit Pfeilfunktionen – Jeeva

Antwort

Verwandte Themen