2013-03-25 4 views
4

Я играю с кишками jQuery, чтобы понять, как это работает. Я это понимаю по большей части, но мне кое-что интересно.Объект jQuery и объект окна

В JQuery, у нас есть это на самом деле создать объект JQuery (по линии 60):

jQuery = function(selector, context) { 
    // The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context, rootjQuery); 
}, 

Метод init длинный, так что я избавлю вас от копирования и вставки (если вы проверите источник хочу посмотреть, это на линии 123). Этот метод доступен через jQuery.prototype. По сути, он рассматривает аргументы и принимает некоторые решения о выборе элементов.

Далее по сценарию (на линии 19174) мы имеем это:

// Expose jQuery to the global object 
window.jQuery = window.$ = jQuery; 

Что интересно, потому что комментируя эту линию еще делает $ доступной в глобальном объекте.

Зачем это необходимо? Кажется, что функция jQuery, которая вызывает метод init, создает глобальное значение $ в любом случае. Я тестировал это на Chrome, Firefox и Safari, и они могут жить без линии Expose jQuery to the global object.

Это для старых браузеров и для обратной совместимости ???

+1

Уверены ли вы? Потому что, я прокомментировал строку, и это вызывает ошибку, когда я предупреждаю '' '. http://jsfiddle.net/RBG7P/ –

+0

Вы пробовали в браузерах локально? – Sethen

+0

Я не выбрал ни одну библиотеку и jsfiddle, как я должен тестировать локально? –

ответ

2

Библиотека jQuery определена в закрытии, и эта строка является тем, что действительно раскрывает библиотеку для глобальной области.

alert($) 

Я попытался комментируя эту линию в скрипке http://jsfiddle.net/RBG7P/1/ и он бросает мне исключение. Когда он не комментировал, это сработало.

Вы уверены, что используете именно это?

+0

Да.Локально на моей машине '$' все еще определен, даже если я прокомментирую эту строку. – Sethen

+0

Проверка переполнения стека, в результате чего я отправляю код, прежде чем я смогу отправить этот ответ, и, таким образом, «alert ($)». –

+0

@SethenMaleno Определить локально? Что именно вы пытаетесь найти на местном уровне. Возможно ли, что вы определяете его где-то еще. –

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