почему $ передается в качестве аргумента для обратного вызова ($) в библиотеке Zepto, где они определяют прослушиватель событий DOMContentLoaded?

Я просматриваю исходный код Zepto и вижу вот эту небольшую функцию: GitHub — Zepto.js

ready: function(callback){
      if (readyRE.test(document.readyState)) callback($)
      else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)
      return this
    }

Я не понимаю, почему $ передается в качестве аргумента для обратного вызова??


person JackNova    schedule 16.04.2012    source источник


Ответы (2)


Это сделано для того, чтобы была удобная локальная ссылка на библиотеку, которую можно назвать как угодно. Так, например, jQuery (который делает то же самое) может не называться $, но вы можете назвать его так без дополнительной функции, выполнив:

jQuery(document).ready(function($) {
    // Your jQuery code here, which uses $ as an alias for jQuery
});
person Ry-♦    schedule 16.04.2012
comment
Думаю, я все еще не понимаю сути. Вы имеете в виду, что вы передаете jQuery или Zepto обратному вызову, чтобы я мог использовать фреймворк? - person JackNova; 16.04.2012
comment
@JackNova: Да, но ты можешь называть это как угодно, вот в чем дело. - person Ry-♦; 16.04.2012
comment
но если я вызвал $.fn.ready(), это означает, что у меня есть ссылка на $, так почему вы должны снова передавать ссылку на обратный вызов? - person JackNova; 16.04.2012
comment
@JackNova: Zepto не знает, что вы позвонили из $.fn.ready. Возможно, вы допустили ошибку, включив другую библиотеку, использующую то же имя, например Prototype, которая перезаписала $. Итак, вместо этого вы использовали Zepto.fn.ready. Это позволяет вам вернуть $, но только для области этого кода, поэтому он не мешает чему-либо еще, использующему Prototype. (Я тоже был в такой печальной ситуации раньше.) - person Ry-♦; 16.04.2012

Если вы посмотрите на нижнюю часть репозитория на gitHub, вы 'я увижу:

// If `$` is not yet defined, point it to `Zepto`
window.Zepto = Zepto
'$' in window || (window.$ = Zepto)

По сути, это сокращение от Zepto.

person Code Maverick    schedule 16.04.2012