JavaScript OOP

What is Object Oriented Programming?

  • Encapsulation
  • Inheritance
  • Polymorphism
  • Abstraction

Javascript is Different from Most Other OOP

  • There is no class in Javascript
  • Every component in JavaScript is an Object, including Functions, Strings, and Numbers. 
  • Uses object literals or constructor functions to create objects
  • Uses prototype inheritance

Function in Javascript

In Javascript, functions double as constructors. You call a function as a constructor by using the new operator.

Encapsulation

  • Concept: enclosing all the functionalities of an object within that object.
  • Then we can instantiate an instance of User using User constructor.

Inheritance

In JavaScript, we don't have the concept of class, so inheritance in JavaScript is prototype based. This means to implement inheritance in JavaScript, an object inherits from another object.

Javascript Prototype

Advantage of using the prototype object to add functions

  • No matter how many objects you create, functions are loaded only once into memory
  • Allows you to override function if required

Polymorphism

The ability to redefine methods for derived classes.

JS PATTERNS

Homework

https://learn.javascript.ru/oop ООП в функциональном стиле

https://learn.javascript.ru/prototypes ООП в прототипном стиле

http://habrahabr.ru/post/144646 Понимание ООП в JavaScript

http://habrahabr.ru/post/144646 Javascript: ООП, прототипы, замыкания, «класс» Timer.js

http://tobyho.com/2010/11/22/javascript-constructors-and Javascript Constructors and Prototypes

https://raw.githubusercontent.com/coodict/javascript-in-one-pic/master/js%20in%20one%20pic.png All JavaScript ( taken from GitHub)

Classwork

  1. Create an object called shape that has the type property and a getType(), getPerimeter() and draw() method. Draw method shows in console that (*name is drawn)
  2. Define a Triangle() constructor function whose prototype is shape. Objects created with Triangle() should have three own properties—a, b, and c, representing the lengths of the sides of a triangle.
  3. Define a Square() constructor function whose prototype is shape. Objects created with Square() should have three own properties—a, b, c, and d representing the lengths of the sides of a square.
  4. Add one more Shape that inherits Triangle or Square or some other shape (in this case you should add it too) and has some specific method and properties

THANKS FOR YOUR ATTENTION

JAVASCRIPT OOP

JavaScript OOP

By sinelshchikovigor

JavaScript OOP

  • 1,062