Various ES3-related bugfixes for bugs introduced by v0.2.3
GNU ease.js remains committed to supporting environments as far back as ES3; unfortunately, this is important due to the popularity of older IE versions (IE<=8). Btw, ease.js runs on IE 5.5, in case you still need that. ;) But please don't use a proprietary web browser. Indeed, this is why the breaks were introduced in the first place: I neglected to run the browser-based test suite on the proprietary Microsloth browsers until after the v0.2.3 release, because I do not own a copy of Windows; I had to run it at work. But, regardless---my apologies; I'll be more diligent.textend 0.2.4
commit
ee85b058df
|
@ -59,7 +59,11 @@ exports.standard = {
|
||||||
return retval;
|
return retval;
|
||||||
};
|
};
|
||||||
|
|
||||||
retf.super = super_method;
|
// `super` is reserved and, in ES3, this causes problems with the
|
||||||
|
// dot-notation; while `foo.super` will work fine in modern (ES5)
|
||||||
|
// browsers, we need to maintain our ES3 compatibility
|
||||||
|
retf['super'] = super_method;
|
||||||
|
|
||||||
return retf;
|
return retf;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,9 @@ Trait.extend = function( dfn )
|
||||||
return ''+name;
|
return ''+name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// we're not a param trait, but we want consistent data
|
||||||
|
Trait.___$$mixinargs = [];
|
||||||
|
|
||||||
// invoked to trigger mixin
|
// invoked to trigger mixin
|
||||||
Trait.__mixin = function( dfn, tc, base )
|
Trait.__mixin = function( dfn, tc, base )
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,9 +45,11 @@ function Global()
|
||||||
return new Global();
|
return new Global();
|
||||||
}
|
}
|
||||||
|
|
||||||
// allows us to extend the global object without actually polluting the
|
// do not pollute the global scope (previously, _the_global was used as
|
||||||
// global scope
|
// the prototype for a new object to take advantage of native overrides,
|
||||||
this._global = new _G();
|
// but unfortunately IE<=8 did not support this and always returned
|
||||||
|
// undefined values from the prototype).
|
||||||
|
this._alt = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,8 +58,9 @@ function Global()
|
||||||
* versions, for any root variable name, and works with ES5 strict mode.
|
* versions, for any root variable name, and works with ES5 strict mode.
|
||||||
*
|
*
|
||||||
* As an example, Node.js exposes the variable `root` to represent global
|
* As an example, Node.js exposes the variable `root` to represent global
|
||||||
* scope, but browsers expose `window`. Further, ES5 strict mode will provde
|
* scope, but browsers expose `window`. Further, ES5 strict mode will
|
||||||
* an error when checking whether `typeof SomeGlobalVar === 'undefined'`.
|
* provide an error when checking whether `typeof SomeGlobalVar ===
|
||||||
|
* 'undefined'`.
|
||||||
*
|
*
|
||||||
* @return {Object} global object
|
* @return {Object} global object
|
||||||
*/
|
*/
|
||||||
|
@ -86,12 +89,14 @@ Global.prototype = {
|
||||||
*/
|
*/
|
||||||
provideAlt: function( name, f )
|
provideAlt: function( name, f )
|
||||||
{
|
{
|
||||||
if ( typeof this._global[ name ] !== 'undefined' )
|
if ( ( _the_global[ name ] !== undefined )
|
||||||
|
|| ( this._alt[ name ] !== undefined )
|
||||||
|
)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._global[ name ] = f();
|
this._alt[ name ] = f();
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -112,7 +117,9 @@ Global.prototype = {
|
||||||
*/
|
*/
|
||||||
get: function( name )
|
get: function( name )
|
||||||
{
|
{
|
||||||
return this._global[ name ];
|
return ( this._alt[ name ] !== undefined )
|
||||||
|
? this._alt[ name ]
|
||||||
|
: _the_global[ name ];
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -229,8 +229,9 @@ require( 'common' ).testCase(
|
||||||
;
|
;
|
||||||
|
|
||||||
// we should be able to invoke the super method by override.super,
|
// we should be able to invoke the super method by override.super,
|
||||||
// which is added atop of the wrapper
|
// which is added atop of the wrapper (note that we quote it to avoid
|
||||||
this.assertStrictEqual( override.super(), expected );
|
// problems with ES3 engines)
|
||||||
|
this.assertStrictEqual( override['super'](), expected );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue