Der native Browsersupport für EcmaScritp2015 ist heute schon ganz gut. Chrome 98%, FF 90%, Edge 90%. Bis man sie aber guten Gewissens produktiv einsetzen kann, dauert es noch eine ganze Weile, weil man meistens auch ältere Browserversionen unterstützen möchte. Dafür gibt es heute schon Compiler, die EcmaScript2015 Code lesen und in eine niedrigere Version übersetzen.
Wie werden denn bspw. Symbols nach ES5 kompiliert? Das hört sich ziemlich abenteuerlich an, wenn man folgendes bedenkt:
typeof Symbol() === 'symbol' // true
Der Babel-Compiler macht aus diesem Code zum Beispiel folgendes:
'use strict';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
_typeof(Symbol()) === 'symbol';