Поскольку 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 в общем. Спасибо!