2. JavaScript
1) скриптовый
2) динамически типизированный
3) прототипный
4) поддержка функционального программирования
5) функции – объекты первого рода
5) диалект ECMAScript
6) другие диалекты (JScript, ActionScript)
3. Основы синтаксиса
if (a < b) return 1
for (i = 0; i < arr.length; i++) {
arr[i] += 1;
}
try {
throw 'test';
}
catch (e) {
console.log(e)
}
4. Объявления переменных
var a = 10, b = 20;
window.x = 30;
Типы переменных:
a = 1; b = 1.1; // Number – числовой
str = 'hello' // String – строковы
b = true; // Boolean – логический
obj = {}; arr = []; // Object – объекты
f = function () { return 1 } // функции – объекты
null и undefined – специальные значения, отдельные типы
6. Функции
function doSomething(a, b, c) {
. . .
}
var doSomething = function(a, b, c) {
. . .
}
function addHandler(obj, msg) {
function say() {
alert(msg)
}
obj.addEventListener('click', say);
}
7. Стандартые объекты JS
Math – станадртные математические операции,
специальные типы Infinity и NaN
String – работа со строками, поиск,
доступ по индексу, строки – immutable
RegExp – работа с регулярными выражениями,
search/match/replace, RegExp.$1
Date – работа с датой и временем, UTC,
таймзоны, простая арифметика
Function – гибкие возможности по вызову
функций
!! Глобальный объект !!
8. Где может находиться JS ?
<script src=”/js/jquery.js”></script>
<script type=”text/script”>
alert('hello there!');
</script>
<a href=”javascript:alert(1)”>CLICK</a>
<a href=”#” onclick=”alert(1)”>PUSH</a>
<div onmouseover=”$(this).fadeOut()”>...
<form onsubmit=”return validate(this)”>...
9. Порядок исполнения JS
1) Исполняется сразу при загрузке страницы
2) JS код добавляет обработчики событий
3) … либо устанавливает таймеры
4) Обработчики событий вызываются асинхронно
10. Простейшие функции
document.write('Hello'); // вывод HTML
alert('Ooops'); // Сообщение об.. успехе
сonfirm('Точно уверен?'); // Подтверждение
<a href=”/delete?id=3”
onclick=”confirm('Точно удалить?')”>DEL</a>
prompr('Введите что-то'); // запрос данных
el = document.getElementById('content');
el.innerHTML = '<div>Hello</div>';
11. API браузера
1) глобальный объект – window – текущее окно
2) document – представляет текущий документ,
используется для работы со структурой HTML
3) location – текущий URL страницы, позволяет
работать с отдельными частями URL,
изменение location – переход по URL
4) history – объект для работы с историей
страниц, позволяет переходить назад и
вперед
5) navigator – содержит информацию о браузере
и операционной системе
6) cookie – получение и установка куки
6) screen – информация о размерах экрана
12. DOM – Document Object Model
Не зависящий от языка и платформы интерфейс
для доступа к содержимому XML, HTML и XHTML
DOM0. (Традиционный DOM)
document.forms[0].elements[0]
document.formName.inputName
document.anchors // массив якорей
document.images // массив картинок
document.all // только в IE
onclick=”...” // обработчики событий
onsubmit=”...”
23. XHR – пример использования
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', '/xhr/test.html', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
alert(xmlhttp.responseText);
} else {
alert('error' + xmlhttp.status);
}
}
};
xmlhttp.send(null);
24. Ограничения AJAX
1) Невозможно загружать файлы.
2) Можно работать только в своем домене.
JSONP!
“Запрос”
<script src=”/load.js?id=3&callback=func”>
</script>
“Ответ”
func({ 'res' : 'ok', . . . });
35. jQuery plugins
jquery.modal // диалоговые окна
jquery.validate // валидация данных
jquery.accordion
jquery.slider
Jquery.suggest // тысячи их!
jQuery UI
36.
37. Best - Practice
1) Без глобальных переменных!
(function() {
. . .
})();
2) Используйте data- атрибуты для обмена
данными
3) Используйте отдельные имена классов
js-login-block, js-login-block-btn
b_login_overlay, b_login_overlay__btn__inner