 
			
				14.12.2010, 13:42
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Основная тут проблема в том, что JS не предоставляет возможности указать функцию, которая бы вызывалась при отсутствии у объекта свойства, к которому обращаются (а-ля __set/__get в PHP). 
 
И даже если представить себя сейчас разработчиками языка, данную возможность добавить в него не так легко. Может поэтому и не добавляется. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.12.2010, 13:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.12.2009 
					
					
					
						Сообщений: 742
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		данную возможность добавить в него не так легко.
	 | 
 
	
 
 ну по чему же ? вроде легко. Просто если нет функции в вызываемом обьекте - вызывать __autoload в этом обьекте. если его нет - то вызывать __autoload выше по структуре обьекта и так до window. а в передаваемых параметрах: this = то где был найден __autoload и 4 входящих - обьект вызова функции, имя функции, thisobj в вызываемой ф-ции, и массив параметров в нее. При возврате true - не генерировать ошибку. false - искать выше __autoload
 
Но на деле в коде видимо не легко такое встроить. 
 
за вызов функции в самой функции. Тут надо по другому делать логику: вызывать __autoload тут надо думаю не имеет смысла а генерировать вызов window.__autoload.call(window, function, fnName, thisOnCall, []);
 
П.С. Введя хотя бы __call, __set, __get, __autoload в JS -  в корень поменялся бы код любой CMS  
		
	
		
		
		
		
		
			
				__________________ 
				Настоящий программист  думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c) 
Относись к человеку  так же, как хотелось бы отношения к себе (с) 
Все нужно там,  где оно нужно, а все не нужно нигде (с)  Gozar
B~Vladi: А кто такой JavaScript стрелок?!  micscr: это тот, кто не jQuery танкист. 
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с)  Никлаус Вирт 
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось PeaceCoder, 14.12.2010 в 14:17.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.12.2010, 14:08
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Забудем пока про __autoload, он упирается в другую проблему, в сеть. 
	
 
	| 
		
			Сообщение от PeaceCoder
			
		
	 | 
 
	| 
		Просто если нет функции в вызываемом обьекте - вызывать __autoload в этом обьекте. если его нет - то вызывать __autoload выше по структуре обьекта и так до window.
	 | 
 
	
 
 Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.12.2010, 14:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.12.2009 
					
					
					
						Сообщений: 742
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.
	 | 
 
	
 
 Не так выразился. Это я и имел ввиду. Если уже в прототипах нет, то искать __autoload в них. В основном я так думаю как раз таки в прототип обьекта и надо ставить __autoload, что бы он был 1 на все подсвойства обьекта.
  
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		Забудем пока про __autoload, он упирается в другую проблему, в сеть.
	 | 
 
	
 
 Если так рассуждать то зачем автолоад? А раз он нужен значит с сетью у разработчика уже все продумано.  
		
	
		
		
		
		
		
			
				__________________ 
				Настоящий программист  думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c) 
Относись к человеку  так же, как хотелось бы отношения к себе (с) 
Все нужно там,  где оно нужно, а все не нужно нигде (с)  Gozar
B~Vladi: А кто такой JavaScript стрелок?!  micscr: это тот, кто не jQuery танкист. 
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с)  Никлаус Вирт 
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось PeaceCoder, 14.12.2010 в 14:19.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.12.2010, 14:27
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 
 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.12.2008 
					
					
					
						Сообщений: 4,201
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		Забудем пока про __autoload, он упирается в другую проблему, в сеть.
	 | 
 
	
 
 не упирается, ты ж сам ему будешь указывать, какой нужен файл. Правда опять же, сети может не быть
 
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.
	 | 
 
	
 
 а это да, может даже идеологическая причина    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				14.12.2010, 15:08
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от PeaceCoder
			
		
	 | 
 
	| 
		Если так рассуждать то зачем автолоад?
	 | 
 
	
 
 Я как раз говорю, что он не нужен   
Я рассуждаю о другой проблеме, без решения которой autoload невозможен.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.12.2010, 15:26
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Ламер 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2010 
					
					
					
						Сообщений: 295
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function test(){
	test_func();
}
try{
	test();
}catch(e){
 if(new String(e).indexOf('is not a function')!=-1){
	//тут парсим строку е и находим имя функции что б подгрузить нужный файл
	var headID = document.getElementsByTagName("head")[0];         
	var addScript = document.createElement('script');
	addScript.type = 'text/javascript';
	addScript.src = '../your_func.js';
	headID.appendChild(addScript);
	test();
 }
}
решение для песочницы, не более  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.12.2010, 16:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.09.2010 
					
					
					
						Сообщений: 178
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |