SlideShare a Scribd company logo
Web Internship 2014
JavaScript
Константин Кузьмин
План
• Области применения
• Добавление на страницу и особенности синтаксиса
• Переменные и операторы
• Примитивные типы
• Массивы, функции, объекты
• this
• window
• DOM
• События
• jQuery
• JSON & AJAX
• Замыкания
• Полезное
JavaScript
Области применения
• Web-приложения
• Мобильные приложения
• Серверные приложения
• Виджеты
• Браузерные плагины
JavaScript
Добавление JS-кода на страницу
<script type="text/javascript">
// js code here
</script>
<script type="text/javascript " src="script.js
"></script>
JavaScript
Особенности синтаксиса
• Комментарии
– Однострочный // комментарий
– Многострочный
/*
комментарий
*/
• Точка с запятой. В JS точку с запятой после
операторов можно ставить, но не обязательно.
Перевод строки подразумевает точку с запятой. Лучше
все же ставить ;
return result //эквивалентно return result;
return //эквивалентно return;
result //эквивалентно result;
JavaScript
Переменные
• Переменной можно присвоить любой значение.
• Имена переменных чувствительны к регистру.
• Переменная объявляется с использванием
ключевого слова var
var variable = 100;
Директива var при объявлении переменной делает
ее локальной, т.е. видимой только внутри текущей
функции
Переменные объявленные без ключевого слова var
попадают в глобальную область видимости window
JavaScript
Операторы
• Арифметические (+ - * / %).
• Логические (&&, ||, !).
• Операторы сравнения ( == != < > <= >= ===
!== ?: ).
• Строгое сравнение – без приведения
типов.
• Приоритеты операторов (http://goo.
gl/wUpvww).
JavaScript
Примитивные типы
• Boolean
var f = true;
var f = new Boolean('someting'); //=> true
• Number
var a = 5;
var a = new Number('5');
• String
var str = 'Hello';
var str = new String('Hello');
• undefined
typeof b == undefined
• null
• Приведение типов: http://learn.javascript.ru/types-conversion
JavaScript
Массивы
• Массивы с числовыми индексами.
var arr = new Array("my", "array");
var arr = [ "my", "array" ];
• Ассоциативные массивы.
var obj = {   n: 1,  str: "Вася" }
JavaScript
Функции
function print(msg) {
document.write(msg, '<br/>');
}
function hypotenuse(a, b) {
function square(x) { return x*x; }
return Math.sqrt(square(a) + square(b));
}
var f = function(x) { return x*x; };
f(5);
JavaScript
Объекты
• Все в JS является объектом
• Объекты создаются функциями-
конструкторами при помощи директивы new.
var date = new Date();
console.log(date.getDate());
• Доступ к методам и параметрам объекта
через точку .
• Функция - это встроенный объект, у которого
есть метод call
JavaScript
this
• Оператор this возвращает ссылку на объект,
являющийся текущим контекстом вызова.
• Текущий объект не является жестко
фиксированным и зависит от контекста вызова
функции.
• Варианты передачи
– неявно, через вызов метода: object.method(...)
– явно, через call: function.call(object,...)
– явно, через apply: function.apply(object,...)
– неявно, через вызов new: new constructor(...)
– иначе – window
JavaScript
Объект window
• Объект window сочетает два в одном:
глобальный объект js и окно браузера.
• Для обращения к свойствам и методам
window не обязательно указывать объект.
var a = 123;
console.log(a);
console.log(window.a);
JavaScript
Объект window
• Основные методы для работы с окном
– window.open()
– window.close()
– window.focus()
• Основные свойства
– window.location
• window.location.reload(); // выполняется перезагрузка текущего
окна
• window.location.href = 'http://translate.google.com/'; //
выполняется переход на другой URL
– window.history
• window.history.back();
• window.history.forward();
– window.top
JavaScript
Объект window
Глобальные методы
• alert
• clearInterval
• clearTimeout
• confirm
• decodeURI
• decodeURIComponent
• encodeURI
• encodeURIComponent
• eval
• isFinite
• isNaN
• parseFloat
• parseInt
• prompt
• setInterval
• setTimeout
JavaScript
Document Object Model (DOM)
<!DOCTYPE HTML>
<html>
   <head>
       <title>Документ</title>
   </head>
   <body>
       <div id="dataKeeper">Data</div>
       <ul>
           <li style="background-color:red">Осторожно</li>
           <li class="info">Информация</li>
       </ul>
       <div id="footer">Made in Russia &copy;</div>
   </body>
</html>
JavaScript
Объект document
• document.getElementById
• document.getElementsByTagName
• document.createTextNode
• Node.removeChild
• Node.appendChild
• https://developer.mozilla.org/en-
US/docs/Web/API/document
JavaScript
DOM Events
• Позволяют с помощью JS регистрировать
различные обработчики, которые будут
выполняться при возникновении событий
(например, нажатие на кнопку).
• Event Object (http://goo.gl/Skpn4x)
• Bubbling
• http://goo.gl/Pn1aYV
JavaScript
DOM Events: Регистрация
обработчиков
• HTML атрибут
<button onclick="alert('Hello world!')">
• DOM свойство
myButton.onclick = function(event){alert
('Hello world');};
• EventTarget.addEventListener
myButton.addEventListener('click', function()
{alert('Hello world');}, false);
JavaScript
jQuery. Подключение.
Документация: http://api.jquery.com/
• CDN (Content Delivery Network)
<script src="//ajax.googleapis.
com/ajax/libs/jquery/1.11.0/jquery.min.js"
></script>
• Просто скачать с http://jquery.com/ и
подключить на страницу как локальный
файл.
JavaScript
jQuery. Готовность документа
$(document).ready(function() {
// выполняется, когда DOM загрузился
alert("document is ready");
});
$(window).load(function() {
/* выполняется, когда страница полностью
загрузилась, включая фреймы и картинки */
alert("window is loaded");
});
JavaScript
jQuery. Селекторы
$(selector, context)
• "#mydiv" // элемент с id="mydiv"
• "div" // все div'ы на странице
• "div.myclass" // div имеющий class="myclass“
• "div:first" // только первый div
• "div:last" // только последний
• "div:even" // все четные div'ы
• "input[type='text']" // все элементы input с type="text“
• "input:checkbox:checked" // все чекбоксы с checked=true
• "div.myclass img" // img, который находится в div'е с class="myclass“
• "div.myclass, div.my2" // div'ы имеющие class="myclass" и class="my2“
• "div", "#myid" // все div'ы, находящиеся в контейнере с id="myid"
JavaScript
jQuery. Работа с элементами
• attr() Аттрибут элемента.
– $(element).attr(‘attr-name’);
– $(element).attr(‘attr-name’, ‘attr-value’);
• prop() Свойства элемента (например, checked)
– $(element).prop(‘prop-name’);
– $(element).prop(‘prop-name’, ‘prop-value’);
• val() Значение элемента
– $(element).val();
– $(element).val(123);
• text() Текстовое содержимое элемента. Не применяется для
input элементов.
– $(element).text();
– $(element).text(“Hello");
JavaScript
jQuery. События
• on() добавить обработчик события
– $("input").on('blur', function (event) {});
• off() удалить обработчик события
– $("input").off('blur', function (event) {});
• trigger() вызвать событие
– $("input").trigger('blur‘)
JavaScript
jQuery. События
Документация: http://api.jquery.com/category/events/
• blur - элемент теряет фокус
• focus – элемент получает фокус (мышью или по Tab)
• change – элемент теряет фокус ввода и при этом
изменилось значение элемента с момента получения фокуса
• click – нажатие на элемент. (~ mousedown + mouseup на
одном и том же участке экрана)
• keydown – нажатие клавиши на клавиатуре
• keyup – отжатие клавиши на клавиатуре
• resize – изменение размеров области просмотра документа
• submit – отправка формы
• и многое другое ☺
JavaScript
jQuery. Each
Используется для манипуляций коллекцией объектов (в том
числе и результат работы селекторов)
<ul>
 <li>foo</li>
 <li>bar</li>
</ul>
$( "li" ).each(function( index ) {
 console.log( index + ": " + $( this ).text() );
});
var obj = {
 "flammable": "inflammable",
 "duh": "no duh"
};
$.each( obj, function( key, value ) {
 alert( key + ": " + value );});
JavaScript
JSON
JSON (JavaScript Object Notation) — текстовый формат
обмена данными, основанный на JavaScript.
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
JavaScript
AJAX
AJAX, Ajax (Asynchronous Javascript and XML — «асинхронный JavaScript
и XML»)
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" },
dataType: "html"
}).done(function( msg ) {
alert( "Data Saved: " + msg );
}).fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
Документаций jQuery http://api.jquery.com/jquery.ajax/
JavaScript
Функции. Callback
function foo(str, cb){
var big_str = str + "some data";
cb(big_str);
}
function bar(data){
console.log(data);
}
foo('i am ', bar);
JavaScript
Функции. Замыкания
Если говорить просто, то замыкание - это внутренняя
функция. И эти функции имеют доступ к переменным
внешней функции.
function makeShout() {
var phrase = "Старт!";
var shout = function() {
alert(phrase);
}
phrase = "Готово!";
return shout;
}
shout = makeShout();
shout();
JavaScript
Функции. Замыкания
Неправильное
использование
function addEvents(divs) {
for(var i=0; i<divs.length; i++) {
divs[i].innerHTML = i;
divs[i].onclick = function() {
alert(i);
}
}
}
Правильное
использование
function addEvents(divs) {
for(var i=0; i<divs.length; i++) {
divs[i].innerHTML = i;
divs[i].onclick = function(x) {
return function() { alert(x) }
}(i)
}
}
JavaScript
Инструменты
• Chrome developers tools
• Advanced REST client
• console.log(), console.error()
JavaScript
Чтиво
• jqfundamentals.com/chapter/javascript-basics
• slideshare.net/guestceb98b/the-javascript-
programming-language
• shamansir.github.io/JavaScript-Garden/
• slideshare.net/danwrong/metaprogramming-
javascript
• slideshare.net/rudevich/javascript-intro-17192262
• es5.javascript.ru/
• codecademy.com/
• http://javascript.ru/
JavaScript

More Related Content

PPT
Web весна 2012 лекция 9
PPT
Yii development
PPT
Javascript
PDF
JavaScript Базовый. Занятие 11.
PDF
JavaScript Базовый. Занятие 07.
PPT
Javascript
PPTX
course js day 4
PPT
Подробная презентация JavaScript 6 в 1
Web весна 2012 лекция 9
Yii development
Javascript
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 07.
Javascript
course js day 4
Подробная презентация JavaScript 6 в 1

What's hot (20)

PDF
2014 Jeeconf - Geb Spock
PPTX
I tmozg js_school
PPTX
Приложения для Windows Phone: как мы это делаем #codefest
PDF
LvivJS 2014 - Win-win c React.js
PPT
JavaScript-библиотека
PPTX
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
PPTX
Selenium: начало работы
PPTX
Windows Azure and node js
PDF
ES2015+: давно пора!
PPT
Подробная презентация JavaScript 6 в 1
PDF
Паттерны быстрой разработки WPF MVVM бизнес-приложений
PPT
Web осень 2012 лекция 9
PPT
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
PDF
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
PPTX
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
PDF
basis.js - почему я не бросил разрабатывать свой фреймворк
PDF
FPUG Dzyga presentation
PPTX
Selenium: приемы работы
PDF
BlueEyes russian
PDF
"Жизнь без интернета" Кувалдин Артём, Яндекс
2014 Jeeconf - Geb Spock
I tmozg js_school
Приложения для Windows Phone: как мы это делаем #codefest
LvivJS 2014 - Win-win c React.js
JavaScript-библиотека
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Selenium: начало работы
Windows Azure and node js
ES2015+: давно пора!
Подробная презентация JavaScript 6 в 1
Паттерны быстрой разработки WPF MVVM бизнес-приложений
Web осень 2012 лекция 9
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
basis.js - почему я не бросил разрабатывать свой фреймворк
FPUG Dzyga presentation
Selenium: приемы работы
BlueEyes russian
"Жизнь без интернета" Кувалдин Артём, Яндекс
Ad

Viewers also liked (20)

PDF
Android - 09 - Fragments
PDF
Android - 13 - Database
PDF
Android - 04 - Internship project introduction
PDF
Web-02-Intermediate PHP
PDF
Android - 16 - QR
PDF
Дополненная реальность в "серьезных играх"
PDF
Android - 14 - Geodata
PDF
Web-01-Basic PHP
PDF
AR открытки: дополненная реальность к 8 марта
PDF
Web Internship - PHP and MySQL
PDF
Разработка мобильных приложений ДЛЯ ДЕТЕЙ
PDF
Database (Lecture 14 – database)
PDF
Введение в Android-разработку (Lecture 06 – basics)
PDF
Web internship Yii Framework
PDF
Android - 07 - User Interface
PDF
Что нужно знать начинающему разработчику на Android
PDF
Android - 10 - Graphics
PDF
iOS-05_1-UIKit
PDF
Android - 06 - Gradle
PDF
Android - 08 - Action bar
Android - 09 - Fragments
Android - 13 - Database
Android - 04 - Internship project introduction
Web-02-Intermediate PHP
Android - 16 - QR
Дополненная реальность в "серьезных играх"
Android - 14 - Geodata
Web-01-Basic PHP
AR открытки: дополненная реальность к 8 марта
Web Internship - PHP and MySQL
Разработка мобильных приложений ДЛЯ ДЕТЕЙ
Database (Lecture 14 – database)
Введение в Android-разработку (Lecture 06 – basics)
Web internship Yii Framework
Android - 07 - User Interface
Что нужно знать начинающему разработчику на Android
Android - 10 - Graphics
iOS-05_1-UIKit
Android - 06 - Gradle
Android - 08 - Action bar
Ad

Similar to Web internship java script (20)

PPTX
Javascript 1
PPT
Web весна 2013 лекция 9
PDF
Основы DHTML.
PDF
JavaScript Базовый. Занятие 02.
PPTX
course js day 1
PPTX
Поговорим о JavaScript, основы и современные тенденции развития языка
PDF
C# Web. Занятие 02.
PPTX
Denys Samoylenko ''JS learning lifehacks: common programmer's mistake''
PPT
JavaScript
PPTX
Module 4
PPTX
введение в Javascript
PPTX
Pavel Rumantsev - Java Script
PDF
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
PDF
C# Web. Занятие 12.
PPS
javascript_part1
PPS
javascript
PPTX
PDF
Алексей Бережной — «jQuery»
PPTX
OOP in JavaScript - Presentation by Eugene Kalosha
PDF
JavaScript. Basics (in russian)
Javascript 1
Web весна 2013 лекция 9
Основы DHTML.
JavaScript Базовый. Занятие 02.
course js day 1
Поговорим о JavaScript, основы и современные тенденции развития языка
C# Web. Занятие 02.
Denys Samoylenko ''JS learning lifehacks: common programmer's mistake''
JavaScript
Module 4
введение в Javascript
Pavel Rumantsev - Java Script
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
C# Web. Занятие 12.
javascript_part1
javascript
Алексей Бережной — «jQuery»
OOP in JavaScript - Presentation by Eugene Kalosha
JavaScript. Basics (in russian)

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
Rest
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
PHP and MySQL
PPTX
MySQL
PDF
Push Notifications (Lecture 22 – push notifications)
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Работа с соцсетями (Lecture 19 – social)
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
Animations (Lecture 17 – animations)
PDF
Toolbar (Lecture 16 – toolbar)
Гуманитарные специальности в IT-индустрии
Box model, display and position (HTML5 тема 07 - box model, display position)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
Rest
PHP basic
PHP Advanced
PHP and MySQL
MySQL
Push Notifications (Lecture 22 – push notifications)
RxJava+RxAndroid (Lecture 20 – rx java)
Работа с соцсетями (Lecture 19 – social)
Работа с геоданными (Lecture 18 – geolocation)
Animations (Lecture 17 – animations)
Toolbar (Lecture 16 – toolbar)

Web internship java script

  • 2. План • Области применения • Добавление на страницу и особенности синтаксиса • Переменные и операторы • Примитивные типы • Массивы, функции, объекты • this • window • DOM • События • jQuery • JSON & AJAX • Замыкания • Полезное JavaScript
  • 3. Области применения • Web-приложения • Мобильные приложения • Серверные приложения • Виджеты • Браузерные плагины JavaScript
  • 4. Добавление JS-кода на страницу <script type="text/javascript"> // js code here </script> <script type="text/javascript " src="script.js "></script> JavaScript
  • 5. Особенности синтаксиса • Комментарии – Однострочный // комментарий – Многострочный /* комментарий */ • Точка с запятой. В JS точку с запятой после операторов можно ставить, но не обязательно. Перевод строки подразумевает точку с запятой. Лучше все же ставить ; return result //эквивалентно return result; return //эквивалентно return; result //эквивалентно result; JavaScript
  • 6. Переменные • Переменной можно присвоить любой значение. • Имена переменных чувствительны к регистру. • Переменная объявляется с использванием ключевого слова var var variable = 100; Директива var при объявлении переменной делает ее локальной, т.е. видимой только внутри текущей функции Переменные объявленные без ключевого слова var попадают в глобальную область видимости window JavaScript
  • 7. Операторы • Арифметические (+ - * / %). • Логические (&&, ||, !). • Операторы сравнения ( == != < > <= >= === !== ?: ). • Строгое сравнение – без приведения типов. • Приоритеты операторов (http://goo. gl/wUpvww). JavaScript
  • 8. Примитивные типы • Boolean var f = true; var f = new Boolean('someting'); //=> true • Number var a = 5; var a = new Number('5'); • String var str = 'Hello'; var str = new String('Hello'); • undefined typeof b == undefined • null • Приведение типов: http://learn.javascript.ru/types-conversion JavaScript
  • 9. Массивы • Массивы с числовыми индексами. var arr = new Array("my", "array"); var arr = [ "my", "array" ]; • Ассоциативные массивы. var obj = {   n: 1,  str: "Вася" } JavaScript
  • 10. Функции function print(msg) { document.write(msg, '<br/>'); } function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); } var f = function(x) { return x*x; }; f(5); JavaScript
  • 11. Объекты • Все в JS является объектом • Объекты создаются функциями- конструкторами при помощи директивы new. var date = new Date(); console.log(date.getDate()); • Доступ к методам и параметрам объекта через точку . • Функция - это встроенный объект, у которого есть метод call JavaScript
  • 12. this • Оператор this возвращает ссылку на объект, являющийся текущим контекстом вызова. • Текущий объект не является жестко фиксированным и зависит от контекста вызова функции. • Варианты передачи – неявно, через вызов метода: object.method(...) – явно, через call: function.call(object,...) – явно, через apply: function.apply(object,...) – неявно, через вызов new: new constructor(...) – иначе – window JavaScript
  • 13. Объект window • Объект window сочетает два в одном: глобальный объект js и окно браузера. • Для обращения к свойствам и методам window не обязательно указывать объект. var a = 123; console.log(a); console.log(window.a); JavaScript
  • 14. Объект window • Основные методы для работы с окном – window.open() – window.close() – window.focus() • Основные свойства – window.location • window.location.reload(); // выполняется перезагрузка текущего окна • window.location.href = 'http://translate.google.com/'; // выполняется переход на другой URL – window.history • window.history.back(); • window.history.forward(); – window.top JavaScript
  • 15. Объект window Глобальные методы • alert • clearInterval • clearTimeout • confirm • decodeURI • decodeURIComponent • encodeURI • encodeURIComponent • eval • isFinite • isNaN • parseFloat • parseInt • prompt • setInterval • setTimeout JavaScript
  • 16. Document Object Model (DOM) <!DOCTYPE HTML> <html>    <head>        <title>Документ</title>    </head>    <body>        <div id="dataKeeper">Data</div>        <ul>            <li style="background-color:red">Осторожно</li>            <li class="info">Информация</li>        </ul>        <div id="footer">Made in Russia &copy;</div>    </body> </html> JavaScript
  • 17. Объект document • document.getElementById • document.getElementsByTagName • document.createTextNode • Node.removeChild • Node.appendChild • https://developer.mozilla.org/en- US/docs/Web/API/document JavaScript
  • 18. DOM Events • Позволяют с помощью JS регистрировать различные обработчики, которые будут выполняться при возникновении событий (например, нажатие на кнопку). • Event Object (http://goo.gl/Skpn4x) • Bubbling • http://goo.gl/Pn1aYV JavaScript
  • 19. DOM Events: Регистрация обработчиков • HTML атрибут <button onclick="alert('Hello world!')"> • DOM свойство myButton.onclick = function(event){alert ('Hello world');}; • EventTarget.addEventListener myButton.addEventListener('click', function() {alert('Hello world');}, false); JavaScript
  • 20. jQuery. Подключение. Документация: http://api.jquery.com/ • CDN (Content Delivery Network) <script src="//ajax.googleapis. com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script> • Просто скачать с http://jquery.com/ и подключить на страницу как локальный файл. JavaScript
  • 21. jQuery. Готовность документа $(document).ready(function() { // выполняется, когда DOM загрузился alert("document is ready"); }); $(window).load(function() { /* выполняется, когда страница полностью загрузилась, включая фреймы и картинки */ alert("window is loaded"); }); JavaScript
  • 22. jQuery. Селекторы $(selector, context) • "#mydiv" // элемент с id="mydiv" • "div" // все div'ы на странице • "div.myclass" // div имеющий class="myclass“ • "div:first" // только первый div • "div:last" // только последний • "div:even" // все четные div'ы • "input[type='text']" // все элементы input с type="text“ • "input:checkbox:checked" // все чекбоксы с checked=true • "div.myclass img" // img, который находится в div'е с class="myclass“ • "div.myclass, div.my2" // div'ы имеющие class="myclass" и class="my2“ • "div", "#myid" // все div'ы, находящиеся в контейнере с id="myid" JavaScript
  • 23. jQuery. Работа с элементами • attr() Аттрибут элемента. – $(element).attr(‘attr-name’); – $(element).attr(‘attr-name’, ‘attr-value’); • prop() Свойства элемента (например, checked) – $(element).prop(‘prop-name’); – $(element).prop(‘prop-name’, ‘prop-value’); • val() Значение элемента – $(element).val(); – $(element).val(123); • text() Текстовое содержимое элемента. Не применяется для input элементов. – $(element).text(); – $(element).text(“Hello"); JavaScript
  • 24. jQuery. События • on() добавить обработчик события – $("input").on('blur', function (event) {}); • off() удалить обработчик события – $("input").off('blur', function (event) {}); • trigger() вызвать событие – $("input").trigger('blur‘) JavaScript
  • 25. jQuery. События Документация: http://api.jquery.com/category/events/ • blur - элемент теряет фокус • focus – элемент получает фокус (мышью или по Tab) • change – элемент теряет фокус ввода и при этом изменилось значение элемента с момента получения фокуса • click – нажатие на элемент. (~ mousedown + mouseup на одном и том же участке экрана) • keydown – нажатие клавиши на клавиатуре • keyup – отжатие клавиши на клавиатуре • resize – изменение размеров области просмотра документа • submit – отправка формы • и многое другое ☺ JavaScript
  • 26. jQuery. Each Используется для манипуляций коллекцией объектов (в том числе и результат работы селекторов) <ul>  <li>foo</li>  <li>bar</li> </ul> $( "li" ).each(function( index ) {  console.log( index + ": " + $( this ).text() ); }); var obj = {  "flammable": "inflammable",  "duh": "no duh" }; $.each( obj, function( key, value ) {  alert( key + ": " + value );}); JavaScript
  • 27. JSON JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. { "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ] } JavaScript
  • 28. AJAX AJAX, Ajax (Asynchronous Javascript and XML — «асинхронный JavaScript и XML») $.ajax({ type: "POST", url: "some.php", data: { name: "John", location: "Boston" }, dataType: "html" }).done(function( msg ) { alert( "Data Saved: " + msg ); }).fail(function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }); Документаций jQuery http://api.jquery.com/jquery.ajax/ JavaScript
  • 29. Функции. Callback function foo(str, cb){ var big_str = str + "some data"; cb(big_str); } function bar(data){ console.log(data); } foo('i am ', bar); JavaScript
  • 30. Функции. Замыкания Если говорить просто, то замыкание - это внутренняя функция. И эти функции имеют доступ к переменным внешней функции. function makeShout() { var phrase = "Старт!"; var shout = function() { alert(phrase); } phrase = "Готово!"; return shout; } shout = makeShout(); shout(); JavaScript
  • 31. Функции. Замыкания Неправильное использование function addEvents(divs) { for(var i=0; i<divs.length; i++) { divs[i].innerHTML = i; divs[i].onclick = function() { alert(i); } } } Правильное использование function addEvents(divs) { for(var i=0; i<divs.length; i++) { divs[i].innerHTML = i; divs[i].onclick = function(x) { return function() { alert(x) } }(i) } } JavaScript
  • 32. Инструменты • Chrome developers tools • Advanced REST client • console.log(), console.error() JavaScript
  • 33. Чтиво • jqfundamentals.com/chapter/javascript-basics • slideshare.net/guestceb98b/the-javascript- programming-language • shamansir.github.io/JavaScript-Garden/ • slideshare.net/danwrong/metaprogramming- javascript • slideshare.net/rudevich/javascript-intro-17192262 • es5.javascript.ru/ • codecademy.com/ • http://javascript.ru/ JavaScript

Editor's Notes

  • #5: Несколько способов добавления JS на страницу. Место включения скриптов. Блокировка загрузки страницы. Возможность непосредственного включения в HTML и минусы этого подхода.
  • #7: Область видимости переменных задаётся функцией, а не блоком кода
  • #8: Оператор "+" делает конкатенацию, если хотя бы один операнд - строка, причем, не обязательно первый Оператор && возвращает последний операнд, если все операнды верны. Если хоть один из операндов неверен, то возвратит первый неверный операнд, причем дальнейшие – не вычисляются. Оператор && обычно используется, чтобы избежать ошибок при получении вложенных свойств объекта. Оператор || возвращает первое верное значение. А если верных значений вообще нет, то последнее неверное. Операторы больше-меньше также работают со строками, сравнивая их лексикографически.
  • #9: Все примитивные типы имеют объектные обертки Undefined отличается от null тем, что обозначает совсем неопределенное значение (его еще никто нигде не определил), а не пустое значение. Неявное приведение типов - задачка
  • #10: Лучше заключать ключи массива в кавычки. Также IE ругается на использование в качестве ключей встроенных слов.
  • #12: Оператор new делает из любой функции - функцию конструктор
  • #19: Пример про bubbling
  • #23: jQuery обертка Самый быстрый селектор Возвращается – массив
  • #24: prop() например, для установки checked
  • #25: Затрагивает только существующие элементы Неймспейсы событий Несколько вариантов off
  • #26: Change на input Осторожно с resize
  • #29: Cross-domain restrictions.