SlideShare une entreprise Scribd logo
1  sur  12
JavaScriptкак объектно-ориентированный язык программирования Сергей Байдачный Специалист по разработке программного обеспечения  Microsoft Ukraine Sergiy.Baydachnyy@microsoft.com
Зачем? Существующий код не идеален HTML 5 предоставляет больше возможностей, а аппетит приходит во время еды JavaScript не привязан к платформе -> существующих фреймворков хватать не будет
Начну с ресурсов
А теперь немного о JavaScript JavaScript является языком объектно-ориентированного программирования В JavaScript нет классов JavaScript обладает следующими областями видимости: Глобальная Функции
Объекты var a={ firstName: "Sergey", lastName: "Baydachnyy", GetName: (function(){                     return this.firstName+" "+this.lastName;                     }) }; a.GetAge=(function(){return 18;}); delete a.GetName;
Объекты  function Person(fName,lName){ this.firstName=fName; this.lastName=lName; this.getName=(function(){                 return this.firstName+" "+lastName;                 });             } var a=new Person("Sergey","Baydachnyy");
Икапсуляция function Person(fName,lName){ varinternalF=(function(){                 return fName+" "+lName;                 }); this.firstName=fName; this.lastName=lName; this.getName=(function(){                 return internalF();                 });             } var a=new Person("Sergey","Baydachnyy");
Прототип prototype – свойство, ссылающееся на объект-прототип для всех создаваемых объектов  Person.prototype.getAge=(function(){                 return 18;                 });
Наследование Возможно несколько вариантов Один из вариантов реализуется с помощью свойства prototype Developer.prototype = new Person();
Шаблон Module  (function () { var a = 10;     function somePrivateStuff() {      a = 15;    } WinJS.Navigation.navigate("/html/firstPage.html"); })();
Defining Objects with WinJS varMyThing = WinJS.Class.define(     function() { },     {         method1: function() { }    });
Objects as Namespaces With WinJS WinJS.Namespace.define("MyNamespace", { somethingUseful: function () { } }); MyNamespace.somethingUseful();

Contenu connexe

Tendances

Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupTimophy Chaptykov
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работыPaul Stashevsky
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agencyit-people
 
Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.MageCloud
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)AvitoTech
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Fwdays
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demomegakott
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис РечкуновJSib
 
XPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverXPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverИлья Кожухов
 
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис РечкуновJSib
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
Dependency Injection в Android, Давид Майборода
Dependency Injection в Android, Давид МайбородаDependency Injection в Android, Давид Майборода
Dependency Injection в Android, Давид МайбородаYandex
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Selenium, а давай подождем?
Selenium, а давай подождем?Selenium, а давай подождем?
Selenium, а давай подождем?SQALab
 

Tendances (20)

Контроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать Makeup
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
View как чистая функция от состояния базы данных  - Илья Беда, bro.agencyView как чистая функция от состояния базы данных  - Илья Беда, bro.agency
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
 
Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)Стабы для фронтенда - Никита Мостовой (HeadHunter)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
 
Performance optimisation in javascript
Performance optimisation in javascriptPerformance optimisation in javascript
Performance optimisation in javascript
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Saint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demoSaint Perl 2009: CGI::Ajax demo
Saint Perl 2009: CGI::Ajax demo
 
Gradle in Enterprise, Is it possible?
Gradle in Enterprise, Is it possible?Gradle in Enterprise, Is it possible?
Gradle in Enterprise, Is it possible?
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
 
Selenium vs AJAX
Selenium vs AJAXSelenium vs AJAX
Selenium vs AJAX
 
XPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverXPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriver
 
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов#7 "Многообещающий JavaScript – Promises" Денис Речкунов
#7 "Многообещающий JavaScript – Promises" Денис Речкунов
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
Dependency Injection в Android, Давид Майборода
Dependency Injection в Android, Давид МайбородаDependency Injection в Android, Давид Майборода
Dependency Injection в Android, Давид Майборода
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Selenium, а давай подождем?
Selenium, а давай подождем?Selenium, а давай подождем?
Selenium, а давай подождем?
 

En vedette

Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...
Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...
Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...Massimo Di Rienzo
 

En vedette (10)

Responsive Web design. Что это и как использовать
Responsive Web design. Что это и как использоватьResponsive Web design. Что это и как использовать
Responsive Web design. Что это и как использовать
 
Semantic Grid. Layout of the future
Semantic Grid. Layout of the futureSemantic Grid. Layout of the future
Semantic Grid. Layout of the future
 
CSS3 Animations
CSS3 AnimationsCSS3 Animations
CSS3 Animations
 
HTML for smart TV
HTML for smart TVHTML for smart TV
HTML for smart TV
 
Способы структурирования данных и виды навигации сложных сайтов СМИ
Способы структурирования данных и виды навигации сложных сайтов СМИСпособы структурирования данных и виды навигации сложных сайтов СМИ
Способы структурирования данных и виды навигации сложных сайтов СМИ
 
Progressive Enhancement
Progressive EnhancementProgressive Enhancement
Progressive Enhancement
 
Hard Rock Design
Hard Rock DesignHard Rock Design
Hard Rock Design
 
HTML5 Geolocation API
HTML5 Geolocation APIHTML5 Geolocation API
HTML5 Geolocation API
 
Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...
Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...
Il divieto di accettare doni, regali e utilità. Una regola che viene da lonta...
 
Microsoft SWIT 2012 in Kyiv, Ukraine
Microsoft SWIT 2012 in Kyiv, UkraineMicrosoft SWIT 2012 in Kyiv, Ukraine
Microsoft SWIT 2012 in Kyiv, Ukraine
 

Similaire à JavaScript как объектно-ориентированный язык программирования

Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb SpockBohdan Danyliuk
 
Web весна 2012 лекция 9
Web весна 2012 лекция 9Web весна 2012 лекция 9
Web весна 2012 лекция 9Technopark
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9Technopark
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalAndrei Solntsev
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_schoolITmozg
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 

Similaire à JavaScript как объектно-ориентированный язык программирования (20)

Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Web весна 2012 лекция 9
Web весна 2012 лекция 9Web весна 2012 лекция 9
Web весна 2012 лекция 9
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Введение в Django
Введение в DjangoВведение в Django
Введение в Django
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
Functional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - finalFunctional Programming Dev Club 2009 - final
Functional Programming Dev Club 2009 - final
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 

Plus de Департамент Стратегических Технологий

Plus de Департамент Стратегических Технологий (18)

Инфографика
ИнфографикаИнфографика
Инфографика
 
Проектирование Интерфейсов
Проектирование ИнтерфейсовПроектирование Интерфейсов
Проектирование Интерфейсов
 
ECMAScript 5: Новое в JavaScript
ECMAScript 5: Новое в JavaScriptECMAScript 5: Новое в JavaScript
ECMAScript 5: Новое в JavaScript
 
Разработка SaaS решений на платформе Windows Azure, Azure University
Разработка SaaS решений на платформе Windows Azure, Azure UniversityРазработка SaaS решений на платформе Windows Azure, Azure University
Разработка SaaS решений на платформе Windows Azure, Azure University
 
Архитектура облачных приложений. Типовые шаблоны, Azure University
Архитектура облачных приложений. Типовые шаблоны, Azure UniversityАрхитектура облачных приложений. Типовые шаблоны, Azure University
Архитектура облачных приложений. Типовые шаблоны, Azure University
 
Технический обзор платформы Windows Azure. Демонстрация, Azure University
Технический обзор платформы Windows Azure. Демонстрация, Azure UniversityТехнический обзор платформы Windows Azure. Демонстрация, Azure University
Технический обзор платформы Windows Azure. Демонстрация, Azure University
 
Сценарии применения Windows Azure, Azure University
Сценарии применения Windows Azure, Azure UniversityСценарии применения Windows Azure, Azure University
Сценарии применения Windows Azure, Azure University
 
Облачные сервисы Майкрософт и возможности для партнеров, Azure University
Облачные сервисы Майкрософт и возможности для партнеров, Azure UniversityОблачные сервисы Майкрософт и возможности для партнеров, Azure University
Облачные сервисы Майкрософт и возможности для партнеров, Azure University
 
Что нового в CSS3
Что нового в CSS3Что нового в CSS3
Что нового в CSS3
 
Обзор IE9 developer tools
Обзор IE9 developer toolsОбзор IE9 developer tools
Обзор IE9 developer tools
 
Pinned Sites
Pinned SitesPinned Sites
Pinned Sites
 
Карта Потребностей
Карта ПотребностейКарта Потребностей
Карта Потребностей
 
Эволюция веб-стандартов
Эволюция веб-стандартовЭволюция веб-стандартов
Эволюция веб-стандартов
 
Буквальный веб дизайн
Буквальный веб дизайнБуквальный веб дизайн
Буквальный веб дизайн
 
Дизайн для Windows Phone 7
Дизайн для Windows Phone 7Дизайн для Windows Phone 7
Дизайн для Windows Phone 7
 
Windows Phone 7. Возможности платформы для бизнеса
Windows Phone 7. Возможности платформы для бизнесаWindows Phone 7. Возможности платформы для бизнеса
Windows Phone 7. Возможности платформы для бизнеса
 
User Centered Design
User Centered DesignUser Centered Design
User Centered Design
 
Платформа в облаках. Windows Azure
Платформа в облаках. Windows AzureПлатформа в облаках. Windows Azure
Платформа в облаках. Windows Azure
 

JavaScript как объектно-ориентированный язык программирования

  • 1. JavaScriptкак объектно-ориентированный язык программирования Сергей Байдачный Специалист по разработке программного обеспечения Microsoft Ukraine Sergiy.Baydachnyy@microsoft.com
  • 2. Зачем? Существующий код не идеален HTML 5 предоставляет больше возможностей, а аппетит приходит во время еды JavaScript не привязан к платформе -> существующих фреймворков хватать не будет
  • 4. А теперь немного о JavaScript JavaScript является языком объектно-ориентированного программирования В JavaScript нет классов JavaScript обладает следующими областями видимости: Глобальная Функции
  • 5. Объекты var a={ firstName: "Sergey", lastName: "Baydachnyy", GetName: (function(){ return this.firstName+" "+this.lastName; }) }; a.GetAge=(function(){return 18;}); delete a.GetName;
  • 6. Объекты function Person(fName,lName){ this.firstName=fName; this.lastName=lName; this.getName=(function(){ return this.firstName+" "+lastName; }); } var a=new Person("Sergey","Baydachnyy");
  • 7. Икапсуляция function Person(fName,lName){ varinternalF=(function(){ return fName+" "+lName; }); this.firstName=fName; this.lastName=lName; this.getName=(function(){ return internalF(); }); } var a=new Person("Sergey","Baydachnyy");
  • 8. Прототип prototype – свойство, ссылающееся на объект-прототип для всех создаваемых объектов Person.prototype.getAge=(function(){ return 18; });
  • 9. Наследование Возможно несколько вариантов Один из вариантов реализуется с помощью свойства prototype Developer.prototype = new Person();
  • 10. Шаблон Module (function () { var a = 10; function somePrivateStuff() { a = 15; } WinJS.Navigation.navigate("/html/firstPage.html"); })();
  • 11. Defining Objects with WinJS varMyThing = WinJS.Class.define( function() { }, { method1: function() { } });
  • 12. Objects as Namespaces With WinJS WinJS.Namespace.define("MyNamespace", { somethingUseful: function () { } }); MyNamespace.somethingUseful();