2017-07-28 4 views
-2

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é à undefinedPourquoi 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']); 

Code Snippet Screenshot

+2

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

+1

Étant donné que vous utilisez une fonction de flèche, 'this' est hérité de la portée de définition. – Phil

+0

Oh ok, donc il y a une limitation avec les fonctions fléchées – Jeeva

Répondre