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);
});
答案 0 :(得分:3)
在什么意义上它不会转换计算属性名称?这对我来说完全正确。
您是指它在this
之前放弃了postfix
吗?这是因为它们相同 - 在ES6中的计算属性名称中this
不引用该对象,而是它在对象外部的任何内容。这是全局对象,而您之前的var postfix
定义了全局对象的属性。因此this.postfix
和postfix
在该背景下是同义词。