2016-09-01 7 views
-3

Babel не транслирует имена вычисленных объектов ES6. Он компилирует все остальное, хотя. Не уверен, что происходит. Использование последней версии cli.Babel не транслирует имена вычисленных наименований ES6

var name = "John"; 
var age = 12; 
var count = 5; 
var postfix = 'age'; 

var person = { 
    name, 
    age, 
    count, 
    postfix, 
    printName(){ 
     console.log(this.name); 
     this.count--; 
     while(this.count){ 
      this.printName(); 
     } 
    }, 

    ['print' + this.postfix]: function(){ 
     console.log(this.age); 
    } 
}; 

person.printName(); 
person.printAge(); 

Бабель выход

var name = "John"; 
var age = 12; 
var count = 5; 
var postfix = 'age'; 

var person = _defineProperty({ 
    name: name, 
    age: age, 
    count: count, 
    postfix: postfix, 
    printName: function printName() { 
     console.log(this.name); 
     this.count--; 
     while (this.count) { 
      this.printName(); 
     } 
    } 
}, 'print' + postfix, function() { // Look here 
    console.log(this.age); 
}); 
+4

Похоже, что он правильно преобразован, в результате имя функции будет 'printage()', но вы пытаетесь получить к нему доступ с помощью 'printAge()', может быть, это проблема. – Stubb0rn

+1

Образцы кода также не совпадают. Первый использует 'this.postfix', а второй использует' postfix' как имя свойства. Я буду второй @ Stubb0rn, хотя вам понадобится 'person.printage();' – loganfsmyth

+0

Кажется, что это была моя ошибка + некоторое замешательство. Я думал, что он будет преобразован в вычисленное значение вместо «print» + postfix. –

ответ

3

В каком смысле не transpiling вычислен имена свойств? Это выглядит точно для меня.

Вы ссылаетесь на то, что оно упало this до postfix? Это потому, что они одинаковые - в имени вычисленного свойства в ES6 не ссылается на объект, а вместо этого - на то, что бы оно было вне объекта. Здесь это глобальный объект, а ваш ранний var postfix определяет свойство для глобального объекта. Таким образом, this.postfix и postfix являются синонимами в этом контексте.