看看下面的类“数据”方法。方法主体包含一个名为“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;
}