Wie kann ich zwischen einer Pfeilfunktion, einer Klasse und einer normalen Funktion unterscheiden?

Wie kann ich diese drei Dinge in ES6 anhand der Referenz unterscheiden?

let x = i => i+1;

class y { constructor(i) { this._i=i+1; } get i(){ return this._i;} }

function z(i) { return i+1; }

Beispiel

test(x) //=> 'arrow'
test(y) //=> 'class'
test(z) //=> 'function'

Und wie kann ich diese Dinge bei Transpilern unterscheiden - Traceur / Babel?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage