Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.05.2011, 15:56
Интересующийся
Отправить личное сообщение для unlike777 Посмотреть профиль Найти все сообщения от unlike777
 
Регистрация: 10.03.2011
Сообщений: 13

Объясните код плиз!
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}

Я понимаю, что в итоге получается... юзаю это
знаю что function(m,key,value) это анонимная функция
и /[?&]+([^=&]+)=([^&]*)/gi регулярное выражение

Но, что за параметры мы передаем в функцию, которых нигде больше нет, а параметр m вообще нигде не используется.... о_О я в шоке
как эти параметры могут хранить данные если мы им ничего не присваиваем, короче связи между этими параметрами и то что получается в итоге никакой нет, но все работает КАК ТАК!?
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2011, 15:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/String/replace
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2011, 16:04
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от unlike777
что за параметры мы передаем в функцию
_Мы_ ничего не передаем. _Мы_ только принимаем. А передает параметры внутренняя реализация функции replace в JS. Она вызывает переданную функцию-callback с n (или более, сейчас не существенно) аргументами: сама совпавшая строка (m, которая нам не нужна, поэтому и не используется) и остальные (n - 1) аргументов - захваченные строки (которые соответствуют содержимому скобок () в регэкспе).

Последний раз редактировалось B@rmaley.e><e, 02.05.2011 в 17:20.
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2011, 17:10
Интересующийся
Отправить личное сообщение для unlike777 Посмотреть профиль Найти все сообщения от unlike777
 
Регистрация: 10.03.2011
Сообщений: 13

Если replaceText является функцией, то для каждой совпадающей подстроки вызывается функция, количество аргументов которой равно m + 3, где m — число круглых скобок, обозначающих отдельные шаблоны в аргументе rgExp. Первым аргументом является подстрока, поиск которой выполняется. Следующие m аргументов — это все найденные совпадения. Аргумент m + 2 — это смещение в текущем stringObj, содержащем найденное совпадение, а аргумент m + 3 — это сам stringObj. Результатом является строка, в которой все найденные подстроки заменены соответствующий значением, возвращенным вызываемой функцией.

Жесть
так и не понятно, что находится в m, key и value =)
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2011, 20:45
Интересующийся
Отправить личное сообщение для unlike777 Посмотреть профиль Найти все сообщения от unlike777
 
Регистрация: 10.03.2011
Сообщений: 13

плин не могу понять эти передаваемые функции в функции
вот есть пример
object.click(function(eventObject){
eventObject.doSomething;
});
поправьте меня, потому что моя логика не укладывается =)

У объекта есть метод click, когда он выполняется
в него передается анонимная функция (со своим без разницы каким кодом), в анонимную функцию передается eventObject, который используется в этой функции, но как он может передаваться если он нигде не существует, а существует токо в самой функии, он вроде создается в этой же функции в которую передается....
нипонятно Т_Т

пытаюсь построить последовательную цепочку всех преобразований, что бы понять эту конструкцию, но не выходит (что за чем идет и что куда передается)

ЗЫ как функция может сама в себя передать чтото!?

Последний раз редактировалось unlike777, 02.05.2011 в 20:48.
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2011, 20:48
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от unlike777 Посмотреть сообщение
object.click(function(eventObject){
eventObject.doSomething;
});


У объекта есть метод click, когда он выполняется
в него передается анонимная функция (со своим без разницы каким кодом),

в анонимную функцию передается eventObject, который используется в этой функции, но как он может передаваться если он нигде не существует, а существует токо в самой функии, он вроде создается в этой же функции в которую передается....
нипонятно Т_Т
вот тоже самое

window.onclick = function(event) {

   event.doSMTH.....

}


дать мануал по ивентам с этого сайта?
Ответить с цитированием
  #7 (permalink)  
Старый 02.05.2011, 20:55
Интересующийся
Отправить личное сообщение для unlike777 Посмотреть профиль Найти все сообщения от unlike777
 
Регистрация: 10.03.2011
Сообщений: 13

2melky
спс мануалов я начитался =)

Я не могу понять процесс, когда в eventObject заносятся данные!!!!!
нигде не обявлена... строгого имени не требует, принимает любое имя...
и в то же время все робит! когда eventObject становиться не абстрактным а реальным обектом?
Ответить с цитированием
  #8 (permalink)  
Старый 02.05.2011, 20:59
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

при клике на элемент
Ответить с цитированием
  #9 (permalink)  
Старый 02.05.2011, 21:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от unlike777
object.click(function(eventObject){
eventObject.doSomething;
});
В переводе на русский.
Человек объекту: чувак, когда пользователь кликнет по ссылке, вызови вот эту функцию и передай ей объект события.
Ответить с цитированием
  #10 (permalink)  
Старый 02.05.2011, 21:16
Интересующийся
Отправить личное сообщение для unlike777 Посмотреть профиль Найти все сообщения от unlike777
 
Регистрация: 10.03.2011
Сообщений: 13

2Kolyaj
Ну абстрактно понятно...

eventObject'у пофиг на именную привязку
=> САМ метод click проверяет есть ли функция среди переданных ему объектов, если есть то первый переданный параметр ЭТОЙ функции связывает с реальным ивентОбектом(типо eventObject(пох какое имя) = *реально произошедшее событие*???!?!?!?!?!? так штоле?

мне нужна не абстрактное объяснение, а на практике как это происходит =)

мб я тупой, токо помидорами не закидывайте)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать bodyclick код royksopp Общие вопросы Javascript 8 14.10.2011 16:39
код странно отрабатывает комбинацию клавиш ffx Общие вопросы Javascript 4 20.01.2011 10:58
Opera отдаёт неправильный код функциональных клавиш. NT Man Opera, Safari и др. 1 19.01.2010 02:45
Как узнать динамический код страницы? gosha13 Общие вопросы Javascript 5 27.07.2009 13:31
Объясните код! Макс Общие вопросы Javascript 1 19.07.2008 23:24