Показать сообщение отдельно
  #1 (permalink)  
Старый 21.05.2012, 22:31
Аватар для oooZinka
Новичок на форуме
Отправить личное сообщение для oooZinka Посмотреть профиль Найти все сообщения от oooZinka
 
Регистрация: 21.05.2012
Сообщений: 2

Не могу добавить в прототип функцию
упростил как смог.

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

Последний раз редактировалось oooZinka, 21.05.2012 в 22:58.
Ответить с цитированием