обертка для создания классов не работает в ie8
var Class = (function () {
var constructor = function (options) {
if (options.extends) {
var parent = options.extends.prototype;
}
var constructor = options.hasOwnProperty('constructor') ?
options.constructor : (parent ? function () {
parent.constructor.apply(this, arguments);
} : function () {
});
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;
}
var prototype = constructor.prototype;
return constructor;
})();
Не работает в ие 8. Ругается "Предполагается наличие идентификатора Class.js, строка 4 символ 16" Помогите починить, пожалуйста. |
По невероятному стечению обстоятельств в IE8 есть дебаггер, который выскакивает принажатии кнопки F12. В нем и можно отследить, на какой строке вывалилась ошибка, чему были равны в этот момент переменные, и почему они оказались именно такимим.
|
По невероятному стечению обстоятельств в IE8 есть *много ненармотивной лексики* дебаггер, чьи свойства оставляют желать лучшего. "Предполагается наличие идентификатора Class.js, строка 4 символ 16" - строка из дебагера. При попытке поставить точку остановки он говорит что данный код ему не доступен. О.о
Если лень считать, то 16-й символ указывает на "extends". |
Переписал так:
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 отличается в серверной и не серверной ОС? |
| Часовой пояс GMT +3, время: 06:25. |