Слайд 1JavaScript как объектно-ориентированный язык программирования
Сергей Байдачный
Специалист по разработке программного обеспечения 
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){
      var internalF=(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");
})();
                                
                            							
														
						 
											
                            Слайд 11Defining Objects with WinJS
var MyThing = WinJS.Class.define(
  function() { },
                                                            
                                     {
    method1: function() { }
  });
                                
                            							
														
						 
											
                            Слайд 12Objects as Namespaces With WinJS
WinJS.Namespace.define("MyNamespace", {
  somethingUseful: function () {
                                                            
                                    }
});
MyNamespace.somethingUseful();