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 undefined
Warum ü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']);
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
Da Sie eine Pfeilfunktion verwenden, wird 'this 'vom definierenden Bereich geerbt. Sie sollten ** nicht ** Pfeil-Funktionen für Prototyp-Methoden verwenden – Phil
Oh ok, so gibt es eine Einschränkung mit Pfeilfunktionen – Jeeva