Babel没有转换ES6计算的属性名称

时间:2016-09-01 17:32:10

标签: javascript ecmascript-6 babeljs babel-cli

Babel没有转换ES6计算属性名称。它编译了其他所有内容。不知道发生了什么事。使用最新版本的cli。

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();

Babel输出

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);
});

1 个答案:

答案 0 :(得分:3)

在什么意义上它不会转换计算属性名称?这对我来说完全正确。

您是指它在this之前放弃了postfix吗?这是因为它们相同 - 在ES6中的计算属性名称中this不引用该对象,而是它在对象外部的任何内容。这是全局对象,而您之前的var postfix定义了全局对象的属性。因此this.postfixpostfix在该背景下是同义词。