упростил как смог.
Помогите пожалуйста не могу понять некоторых нюансов с 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();