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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> concat для arguments ? как создать arguments  
:(
    Опции темы
SunOK
Дата 24.11.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2005

Репутация: нет
Всего: 1



Доброго время суток.
Задача: создать функцию AddEvent(obj,type,fn,val1,val2,...)
всё хорошо еслибы не arguments, который вродибы как и массив, но не имеет методов! 

смысл таков 
Выделить всёкод Javascript
1:
2:
3:
4:
5:
6:
function AddEvent(obj,type,fn){
    var _arg = Array.slice(arguments,3)    
    function f(){                
        fn.apply(fn,_arg)   // arguments + _arg   как ? 
    }
         .....

PM MAIL WWW   Вверх
ksnk
Дата 24.11.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



К примеру - так:
Выделить всёкод Javascript
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
    function makeArray( a ) {
        if ( a instanceof Array)
            return a.slice( );
        else {
            var r = [];
            for ( var i = 0, al = a.length; i < al; i++ )
                r.push( a[i] );
            return r;
        }
    }
function AddEvent(obj,type,fn){
    function f(){                
        fn.apply(fn,makeArray(arguments).slice(3))   // arguments + _arg   Вот так! 
    }
         .....



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SunOK
Дата 25.11.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2005

Репутация: нет
Всего: 1



спасибо ksnk меня почемуто  переклинело, что ф-я apply() вторым параметром принимает Object !

Это сообщение отредактировал(а) SunOK - 25.11.2007, 14:54
PM MAIL WWW   Вверх
SunOK
Дата 30.11.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2005

Репутация: нет
Всего: 1



У меня получилось все это склипать вот в  такой вид 
Выделить всёкод Javascript
1:
2:
3:
4:
5:
6:
7:
8:
function addEvent(obj, name, handler) {   
    var arr = (arguments.length>3)?(Array.prototype.slice.apply(arguments)).slice(3,arguments.length):[];
    function fn(e){    
        handler.apply(this,(new Array(e)).concat(arr));
    }
    if(obj.addEventListener)  return obj.addEventListener(name, handler, false);
    else if (obj.attachEvent) return obj.attachEvent('on'+name, handler);    
}

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


 




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


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

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