обертка для создания классов не работает в 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, время: 10:32. |