Переписал так:
var Class = (function() {
var constructor = function( options ) {
if( typeof options['extends'] != 'undefined' ) {
var parent = options['extends'].prototype;
}
var __constructor = options.hasOwnProperty('constructor') ?
options.constructor : (parent ? function() {
parent.constructor.apply( this, arguments );
} : function() {});
var constructor = function() {
if (options.defaults) {
for (var i in options.defaults) {
this[i] = options.defaults[i];
}
}
__constructor.apply(this,arguments);
}
if( parent ) {
var fn = function() {};
fn.prototype = parent;
constructor.prototype = new fn();
constructor.prototype.constructor = constructor;
}
if( options.static ) {
for( var i in options.static )
constructor[i] = options.static[i];
}
for( var i in options )
if( i != 'static' && i != 'constructor' && i != 'extends' )
constructor.prototype[i] = options[i];
constructor.extend = function( options ) {
options['extends'] = this;
return new Class( options );
}
return constructor;
}
return constructor;
})();
Удивительные результаты. В серверной ОС в IE8 не работает, а в обычной XP на том же браузере работает. Разве IE отличается в серверной и не серверной ОС?