-4

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

通天塔输出

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

1 回答 1

3

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

你指的是它放弃了this之前的事实postfix吗?那是因为它们是相同的——this在 ES6 中的计算属性名称中并不引用对象,而是在对象之外的任何内容。这是全局对象,您之前var postfix在全局对象上定义了一个属性。所以this.postfixpostfix在这种情况下是同义词。

于 2016-09-01T17:43:26.340 回答