次のクラスの「データ」メソッドを見てください。メソッド本体には「result」という変数が含まれており、else if 句で配列に再割り当てされます。
何らかの理由で、babel は前述の変数の先頭にアンダースコアを付けてトランスパイルします。
ES6 クラス:
class Serie {
constructor( name, data = [] ) {
Object.defineProperty(this, "name", {
enumerable: false,
configurable: false,
writable: false,
value: name
})
data.map( (v, i) => this[v.name] = v.value );
}
data( name ) {
let result = null;
if ( arguments.length == 1 ) {
result = this.hasOwnProperty( name ) ? this[ name ] : result;
}
else if ( arguments.length == 0 ) {
let keys = Object.keys(this),
i = keys.length,
result = [];
while ( i-- ) {
result.push( this[ keys[i] ] );
}
}
return result;
}
// ...
}
トランスパイルされたメソッド:
function data(name) {
var result = null;
if (arguments.length == 1) {
result = this.hasOwnProperty(name) ? this[name] : result;
} else if (arguments.length == 0) {
var keys = Object.keys(this),
i = keys.length,
_result = [];
while (i--) {
_result.push(this[keys[i]]);
}
}
return result;
}