02.05.2011, 15:56
|
Интересующийся
|
|
Регистрация: 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 вообще нигде не используется.... о_О я в шоке
как эти параметры могут хранить данные если мы им ничего не присваиваем, короче связи между этими параметрами и то что получается в итоге никакой нет, но все работает КАК ТАК!?
|
|
02.05.2011, 15:59
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
|
|
02.05.2011, 16:04
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от unlike777
|
что за параметры мы передаем в функцию
|
_Мы_ ничего не передаем. _Мы_ только принимаем. А передает параметры внутренняя реализация функции replace в JS. Она вызывает переданную функцию-callback с n (или более, сейчас не существенно) аргументами: сама совпавшая строка (m, которая нам не нужна, поэтому и не используется) и остальные (n - 1) аргументов - захваченные строки (которые соответствуют содержимому скобок () в регэкспе).
Последний раз редактировалось B@rmaley.e><e, 02.05.2011 в 17:20.
|
|
02.05.2011, 17:10
|
Интересующийся
|
|
Регистрация: 10.03.2011
Сообщений: 13
|
|
Если replaceText является функцией, то для каждой совпадающей подстроки вызывается функция, количество аргументов которой равно m + 3, где m — число круглых скобок, обозначающих отдельные шаблоны в аргументе rgExp. Первым аргументом является подстрока, поиск которой выполняется. Следующие m аргументов — это все найденные совпадения. Аргумент m + 2 — это смещение в текущем stringObj, содержащем найденное совпадение, а аргумент m + 3 — это сам stringObj. Результатом является строка, в которой все найденные подстроки заменены соответствующий значением, возвращенным вызываемой функцией.
Жесть
так и не понятно, что находится в m, key и value =)
|
|
02.05.2011, 20:45
|
Интересующийся
|
|
Регистрация: 10.03.2011
Сообщений: 13
|
|
плин не могу понять эти передаваемые функции в функции
вот есть пример
object.click(function(eventObject){
eventObject.doSomething;
});
поправьте меня, потому что моя логика не укладывается =)
У объекта есть метод click, когда он выполняется
в него передается анонимная функция (со своим без разницы каким кодом), в анонимную функцию передается eventObject, который используется в этой функции, но как он может передаваться если он нигде не существует, а существует токо в самой функии, он вроде создается в этой же функции в которую передается....
нипонятно Т_Т
пытаюсь построить последовательную цепочку всех преобразований, что бы понять эту конструкцию, но не выходит (что за чем идет и что куда передается)
ЗЫ как функция может сама в себя передать чтото!?
Последний раз редактировалось unlike777, 02.05.2011 в 20:48.
|
|
02.05.2011, 20:48
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от unlike777
|
object.click(function(eventObject){
eventObject.doSomething;
});
У объекта есть метод click, когда он выполняется
в него передается анонимная функция (со своим без разницы каким кодом),
в анонимную функцию передается eventObject, который используется в этой функции, но как он может передаваться если он нигде не существует, а существует токо в самой функии, он вроде создается в этой же функции в которую передается....
нипонятно Т_Т
|
вот тоже самое
window.onclick = function(event) {
event.doSMTH.....
}
дать мануал по ивентам с этого сайта?
|
|
02.05.2011, 20:55
|
Интересующийся
|
|
Регистрация: 10.03.2011
Сообщений: 13
|
|
2melky
спс мануалов я начитался =)
Я не могу понять процесс, когда в eventObject заносятся данные!!!!!
нигде не обявлена... строгого имени не требует, принимает любое имя...
и в то же время все робит! когда eventObject становиться не абстрактным а реальным обектом?
|
|
02.05.2011, 20:59
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
при клике на элемент
|
|
02.05.2011, 21:03
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от unlike777
|
object.click(function(eventObject){
eventObject.doSomething;
});
|
В переводе на русский.
Человек объекту: чувак, когда пользователь кликнет по ссылке, вызови вот эту функцию и передай ей объект события.
|
|
02.05.2011, 21:16
|
Интересующийся
|
|
Регистрация: 10.03.2011
Сообщений: 13
|
|
2Kolyaj
Ну абстрактно понятно...
eventObject'у пофиг на именную привязку
=> САМ метод click проверяет есть ли функция среди переданных ему объектов, если есть то первый переданный параметр ЭТОЙ функции связывает с реальным ивентОбектом(типо eventObject(пох какое имя) = *реально произошедшее событие*???!?!?!?!?!? так штоле?
мне нужна не абстрактное объяснение, а на практике как это происходит =)
мб я тупой, токо помидорами не закидывайте)
|
|
|
|