Je viens de commencer à apprendre ES6
donc j'ai utilisé Babel
pour compiler ce code, mais quand j'attribue this
mot-clé à une variable à l'intérieur d'une méthode prototype complié à undefined
Pourquoi Babel compile-t-elle ce mot-clé comme non défini dans une fonction prototype?
est-ce un bug? ou un problème avec mon 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 Code Compilé
'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']);
Bonjour, et bienvenue dans Stack Overflow. S'il vous plaît soyez conscient que nous n'aimons pas le code dans les images, et préfèrent avoir du code que nous pouvons réellement copier et coller, ou même exécuter. Code de retrait avec quatre espaces à afficher en tant que code. Vous pouvez le faire automatiquement en sélectionnant votre code visuellement, puis en appuyant sur Ctrl-K (ou 'Cmd-K' sur Mac). – Amadan
Étant donné que vous utilisez une fonction de flèche, 'this' est hérité de la portée de définition. – Phil
Oh ok, donc il y a une limitation avec les fonctions fléchées – Jeeva