Лучшее понимание Javascript путем изучения элементов jQuery

Поскольку jQuery является широко используемым и зрелым коллективным проектом, я не могу не взглянуть на его источник, чтобы получить рекомендации по написанию лучшего Javascript. Я все время использую библиотеку jQuery вместе со своими приложениями PHP, но когда я заглядываю под капот этой довольно сложной библиотеки, я понимаю, насколько я все еще не понимаю Javascript. Вот, у меня есть несколько вопросов к сообществу SO. Прежде всего, рассмотрим следующий код ...

$('#element').attr('alt', 'Ivan is SUPER hungry! lolz');

vs

$('#element').attr({'alt': 'Ivan is an ugly monster! omfgz'});

Итак, это означает, что метод attr () был разработан, чтобы принимать ЛИБО имя атрибута, имя атрибута и значение или карта парных значений? Может ли кто-нибудь дать мне краткое объяснение того, что на самом деле представляет собой карта и чем она отличается от массива в Javascript?

Двигаясь дальше, вся библиотека связана с этим делом ...

(function(window, undefined) { /* jQuery */ })(window);

Я понимаю, что закрытые круглые скобки вызывают поведение, подобное body onLoad = "function ();" , но как называется эта практика и отличается ли она от использования onLoad ] обработчик события? Кроме того, я не могу разобраться в бите (window) в конце. Что именно происходит здесь с объектом window ?

Я ошибаюсь в оценке, что объекты ничем не отличаются от функций в Javascript? Пожалуйста, поправьте меня, если я ошибаюсь, но $ () - это всеобъемлющий объект jQuery, но он выглядит как метод. Вот еще один быстрый вопрос с примером кода ...

$('#element').attr('alt', 'Adopt a Phantom Cougar from Your Local ASPCA');

... Должно выглядеть примерно так внутри (возможно, я ошибаюсь в этом) ...

function $(var element = null) {
    if (element != null) {
        function attr(var attribute = null, var value = null) {
            /* stuff that does things */
        }
    }
}

Это постоянная процедура для определения объектов и их дочерние методы и свойства в Javascript? Сравнивая Javascript с PHP, используете ли вы точку . точно так же, как вы использовали бы -> для извлечения метода из объекта?

Прошу прощения за то, что это немного длинно, но ответы на эти вопросы раскроют мне многое о jQuery и Javascript в общем. Спасибо!

8
задан 65Fbef05 22 June 2011 в 13:44
поделиться