Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

Что за объект получается на выходе функции window.jQuery() и куда этот объект “прикреплен” в BOM?

Привет.
Вопрос по jQuery.
Что за объект получается на выходе функции window.jQuery() и куда этот объект "прикреплен" в BOM ? Почему не используется ключевое слово new? Насколько я знаю, только функция-конструктор может создать объект. А window.jQuery() как раз это и делает - создает объект. В книге Флэнагана написано по этому поводу, что "jQuery() является фабричной функцией, а не конструктором: она возвращает вновь созданный объект, но она используется без ключевого слова new" . Что значит "фабричной" функцией? Первый раз такой термин вижу.


Ответ

На выходе window.jQuery() получается обычный javascript объект. Он никуда не прикреплен. Сохранить его можно в любой переменной, либо передать в качестве параметра.
Почему не используется ключевое слово new?
Потому что jQuery - это обычная функция, а не конструктор.
Фабричная функция, так же известна под названием Фабричный метод
Чтобы разобраться, что же происходит в функции jQuery, можно обратится напрямую к исходникам, и там можно увидеть следующее
function (selector, context) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init(selector, context); }
Отсюда видно, что данная функция используется просто для вызова конструктора, поэтому нет нужды использовать оператор new

Комментариев нет:

Отправить комментарий