Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обсуждение темы о "прототипах" 
:(
    Опции темы
Sardar
Дата 18.6.2005, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



ИЕ 5.0 держит на борту JavaScript 1.3 - весьма урезанная вещь. Уже обсуждали как привести массивы к номральному виду имплементировав методы pushpopslicesplice и другие. Теперь подумаем как поднять на ИЕ5.0 метод call и apply у функций. Эти методы позволяют запустить функцию в контексте любого обьекта, что очень удобно для создаваемых динамически различных обьектов.

Код
if(typeof(Function)!="undefined" && typeof(Function.prototype.call)!="function")
 Function.prototype.call=function(obj, args) {
   if(typeof(obj)!="object") return;
   //и так, создадим у обьекта новое рандомное не заюзанное поле, куда и включим функцию
   var name="_my_call_temp_name_"+Math.round(Math.random()*1000000);
   while(typeof(obj[name])!="undefined") name="_my_call_temp_name_".Math.round(Math.random()*1000000);
   obj[name]=this;
   //теперь вызовем усё что пришло
   var arg="";
   for(var i=1; i<arguments.length; i++) arg+=", arguments["+i+"]";
   eval("obj."+name+"("+arg.substr(2)+");");
   //теперь подчистим за собой
   delete obj[name];
 }

function test(arg1, arg2) {
  alert("Object field: "+this.field+"\nArgument 1: "+arg1+"\nArgument 2: "+arg2);
}
a={field:"pole!"};
test.call(a, "argument 1 !!!", "argument 2 !");

Аналогично пишеться apply.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.