Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ THREE Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Aurelia-CLI. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ RequireJS. ΠΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΊΡΠΎΠΌΠ΅ Internet Explorer (ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π² IE 11).
ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΠΎΠΌΠ°Π΅ΡΡΡ, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠ»ΠΎΠ² Π²Π²Π΅ΡΡ Ρ, ΡΡΡΠΎΠΊΠΈ 42-57) Π² ΡΠ°ΠΉΠ»Π΅ /build/three.js
if ( Function.prototype.name === undefined ) {
// Missing in IE
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
Object.defineProperty( Function.prototype, 'name', {
get: function () {
return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ];
}
} );
}
ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ can't redefine non-configurable property "name"
.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π½Π°:
if (!(function f() {}).name) {
Object.defineProperty(Function.prototype, 'name', {
get: function() {
var name = (this.toString().match(/^function\s*([^\s(]+)/) || [])[1];
// For better performance only parse once, and then cache the
// result through a new accessor for repeated access.
Object.defineProperty(this, 'name', { value: name });
return name;
}
});
}
Π ΡΡΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ!
=> ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² /build/three.js, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² Π±ΡΠ΄ΡΡΠΈΡ ΡΠ±ΠΎΡΠΊΠ°Ρ ?
ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ° ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅?
if ( 'name' in Function.prototype === false ) {
ΠΠ»ΠΈ ΠΆΠ΅
if ( Function.prototype.hasOwnProperty( 'name' ) === false ) {
Π― ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ if
.
if ( 'name' in Function.prototype === false ) {
ΡΡΠΎ ΠΏΡΡΡ!
Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ
if
.ΡΡΠΎ ΠΏΡΡΡ!