Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.12.2010, 13:42
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Основная тут проблема в том, что JS не предоставляет возможности указать функцию, которая бы вызывалась при отсутствии у объекта свойства, к которому обращаются (а-ля __set/__get в PHP).

И даже если представить себя сейчас разработчиками языка, данную возможность добавить в него не так легко. Может поэтому и не добавляется.
Ответить с цитированием
  #12 (permalink)  
Старый 14.12.2010, 13:54
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 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.
Ответить с цитированием
  #13 (permalink)  
Старый 14.12.2010, 14:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Забудем пока про __autoload, он упирается в другую проблему, в сеть.

Сообщение от PeaceCoder
Просто если нет функции в вызываемом обьекте - вызывать __autoload в этом обьекте. если его нет - то вызывать __autoload выше по структуре обьекта и так до window.
Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.
Ответить с цитированием
  #14 (permalink)  
Старый 14.12.2010, 14:16
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Kolyaj
Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.
Не так выразился. Это я и имел ввиду. Если уже в прототипах нет, то искать __autoload в них. В основном я так думаю как раз таки в прототип обьекта и надо ставить __autoload, что бы он был 1 на все подсвойства обьекта.

Сообщение от Kolyaj
Забудем пока про __autoload, он упирается в другую проблему, в сеть.
Если так рассуждать то зачем автолоад? А раз он нужен значит с сетью у разработчика уже все продумано.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 14.12.2010 в 14:19.
Ответить с цитированием
  #15 (permalink)  
Старый 14.12.2010, 14:27
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Kolyaj
Забудем пока про __autoload, он упирается в другую проблему, в сеть.
не упирается, ты ж сам ему будешь указывать, какой нужен файл. Правда опять же, сети может не быть

Сообщение от Kolyaj
Это будет противоречить другому механизму: поиску свойства в цепочке прототипов.
а это да, может даже идеологическая причина
Ответить с цитированием
  #16 (permalink)  
Старый 14.12.2010, 15:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от PeaceCoder
Если так рассуждать то зачем автолоад?
Я как раз говорю, что он не нужен
Я рассуждаю о другой проблеме, без решения которой autoload невозможен.
Ответить с цитированием
  #17 (permalink)  
Старый 15.12.2010, 15:26
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 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();
 }
}

решение для песочницы, не более
Ответить с цитированием
  #18 (permalink)  
Старый 15.12.2010, 16:03
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

А почему б не использовать решение аля jit? http://www.felocity.org/blog/article...or_javascript/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48
Самая лучшая книга по JS? ulandj Оффтопик 2 06.04.2009 11:35
"Классический" ООП в JavaScript Андрей Параничев Общие вопросы Javascript 67 25.03.2009 18:33