Не могу добавить в прототип функцию
упростил как смог.
Помогите пожалуйста не могу понять некоторых нюансов с prototype. Вот файлы JS (суть проблемы): app.js window.Application = function(){ this.ajax = new function(){ //... this.send = function(type,url,data,request){ this._axobject.open(type,url,true); this._axobject.onreadystatechange = function(){ try { if (this.readyState == 4){ if (this.status == 200){ request(this.responseText); }else{ console.error('По запросу "'+url+'" ошибка: '+this.statusText); } } }catch(e){ console.error(e.message); } } this._axobject.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT'); this._axobject.send(data); } } //... this.include = function( name, url, reload ){ //... this.ajax.send('GET',url,null,function(data){ eval(data); //... }); } } var app = window.app = new Application(); app.include('app.hash', '/templates/includes/js/app.hash.js'); app.hash.js window.app.prototype.hash = function( string ){ // Создание простого hash из строки, // Чтобы в будущем создавать хеш путей в ключах массива return hash; } Проблема в том, что при создании приложения (класса) я не могу с помощью eval( 'тут код файла app.hash.js' ) прикрепить функцию в приложение. Выводит ошибку Cannot set property 'app.hash' of undefined ajax.send._axobject.onreadystatechange Пытался сделать все проще с помощью jQuery.getScript, но не вышло, уже не помню какая была ошибка, просматривал исходный код jQuery сломал себе мозг излишком информации и решил написать свою функцию httprequest для получение скрипта и выполнения его в eval() который можно найти в функции Application.include(); |
Пришлось сделать все топорным способом. из-за присваивания к событию readystatechange функции с выполнением кода, использовать там уже this невозможно.
Для решения задачи создал внутри приложения глобальную переменную для объекта window, чтобы можно было внутри функции ajax complete работать с данными внутри приложения. Это полнейший говнокод, все должно работать как и надо в ООП. Решение пока не нашел и возможно уже не хватит сил, целые сутки сижу над кодом маюсь. |
Часовой пояс GMT +3, время: 09:37. |