Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2012, 21: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 в 21:58.
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2012, 23:08
Аватар для oooZinka
Новичок на форуме
Отправить личное сообщение для oooZinka Посмотреть профиль Найти все сообщения от oooZinka
 
Регистрация: 21.05.2012
Сообщений: 2

Пришлось сделать все топорным способом. из-за присваивания к событию readystatechange функции с выполнением кода, использовать там уже this невозможно.
Для решения задачи создал внутри приложения глобальную переменную для объекта window, чтобы можно было внутри функции ajax complete работать с данными внутри приложения.
Это полнейший говнокод, все должно работать как и надо в ООП. Решение пока не нашел и возможно уже не хватит сил, целые сутки сижу над кодом маюсь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу вызвать функцию из тела, подскажите что не так Rentony Элементы интерфейса 3 15.12.2011 11:43
Не могу запустить функцию по onclick Sadist_dead Элементы интерфейса 3 26.11.2011 14:35
Добавить функцию, не знаю как сделать maxim96 Элементы интерфейса 0 23.07.2011 20:16
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 22:32
Скрипт калькулятора (не могу добавить еще одно значение) Jee_Day Я не знаю javascript 2 22.05.2009 12:19