2016-09-01 5 views
-3

バベルはES6で計算されたプロパティ名をトランスリングしていません。それは他のすべてをコンパイルします。何が起こっているのか分かりません。 cliの最新バージョンを使用しています。バベルは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'を使用し、2番目は' postfix'をプロパティ名として使用します。私は2番目の@ Stubb0rnだが、あなたは 'person.printage();'が必要だろう – loganfsmyth

+0

それは私のエラー+混乱のようだった。私はそれが 'print' + postfixの代わりに計算された値に変換されると考えました。 –

答えて

3

それは計算されたプロパティ名をtranspilingされていませんどのような意味では?それは私にとってまさに正しいように見えます。

postfixの前にthisが削除されたということですか?それは同じものだからです -は、ES6の計算されたプロパティ名にオブジェクトを参照せず、そのオブジェクトの外側にあるものであれば何でも構いません。ここにはグローバルオブジェクトがあり、以前のvar postfixはグローバルオブジェクトのプロパティを定義しています。したがって、this.postfixpostfixはその意味で同義語です。

関連する問題