2014-02-15 5 views
1

Ниже приведен код, используемый во многих userscripts:Опишите (jquery)?

function with_jquery(f) { 
var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.textContent = "(" + f.toString() + ")(jQuery)"; 
document.body.appendChild(script); 
}; 

я понял все, что в нем, кроме этой линии:

script.textContent = "(" + f.toString() + ")(jQuery)"; 

я знал, что содержание текста устанавливает содержание текста сценария (конечно) , но я просто не могу все понять после =. не должно ли это быть:

script.textContent = string; 

ответ

1

оберточной строку с ( f.toString() )(jQuery) пользователь настраивает строку, которая должна быть выполнен как immediately invoked function expression, с объектом JQuery перешедшим в эту функцию.

Мы ожидали бы, то, что f.toString() будет выглядеть как

function($){ [doing something...] } 

Так что объект JQuery будет стоять за $

Новая строка будет по-прежнему должны быть оценены, конечно.

1

Функция создает элемент сценария с этим кодом:

(content-of-f)(jQuery) 

Так что, если вы передаете строку, содержащую функцию (например, function($) { do something }) и функция запускается на выполнении в то время как jQuery передается для $ параметрических.

1

анонимная функция:

(function(){ 
    //Normal code goes here 
}) 

Действительно интересная часть того, что происходит, когда мы добавим это право в конце:

(); 

Тех две маленьких скобок вызывает все содержащееся в предыдущих скобках быть выполняется немедленно.

Когда вы пишете (jquery)(), как показано ниже:

(function(a){ 
    console.log(a === jquery); //Returns 'true' 
})(jquery); 

Все ссылки на «JQuery» в вашем коде может быть переименована в «а». проверьте это CHEK THIS

Смежные вопросы