From the Closure Compiler docs:
Using Object.defineProperties or ES6 getter/setters:
The compiler does not understand these constructs well. ES6 getter and setters are transformed to Object.defineProperties(…) through transpilation. Currently, the compiler is unable to statically analyze this construct and assumes properties access and set are side effect free. This can have dangerous repercussions.
I can reproduce your issue as well, the compiler name-mangles the 'isQuaternion'
property name despite it being defined as a string literal. This issue from 2014 seems related.
Confused why three.js would define this.isQuaternion = true
with Object.defineProperties(...)
in the source? Agreed that the compiler should process this input without issue, but with a quirk like that, I’m not surprised this is an issue.