-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Browser implementation workarounds
John Lenz edited this page Jun 26, 2017
·
5 revisions
Closure works around a number of browser ES6+ implementation issues.
- ChakraCore #1496 is an optimizer bug that causes constructor invocations to return the class instead of the instance. Closure Library explicitly checks the user agent for Edge and considers it a non-ES6-compliant browser as a result.
-
ChakraCore #3217 is a bug in
Reflect.construct
that prevents the compiler's super() call transpilation from working correctly. The compiler checks for this bug and uses a slower polyfill that callsReflect.setPrototypeOf
instead.
- Safari 10 Object.seal(class C{}) throws an exception stating that the properties are not configurable, but not 10.2 so no bug was reported. Closure Library avoids calling Object.seal on functions for goog.module exports.
- Webkit #167328 Safari 10 incorrectly scopes functions in eval. Closure Library, when this is detected, avoid the problem when loading goog.modules by wrapping code the code in an IIFE which has the correct scoping.