JavaScript is a very flexible language. In contrast with Java, PHP, C++ and many other languages, there are many ways to implement OOP in JavaScript.
So what the OOP is all about? Inheritance is only the small piece.
The three main features should be supported:
- Inheritance
- It is possible to create a child object
TreeMenuwhich extends functionality of theMenu.The child object automatically gains access to parent’s methods/properties, but it also can have own methods/properties.
That’s great, because allows to reuse generic
Menucode forTreeMenu,SlidingMenuand other specific menu types.
- Encapsulation
- An object can forbid external access to chosen properties and methods, so that they can only be called by other methods of same object.
That allows to hide internal details of
Menu.For example, the code which uses a
Menushould not directly access it’s DOM structure, handler etc. They are internal.On the other hand, there should be
open,hideand other publicly accessible methods. These methods are called an external(or public) interface.There are three most well-known encapsulation levels:
- private
- Accessible only from the class itself, not accessible from inheritants.
- protected
- Accessible from the class itself, inheritants are also allowed to access it.
- public
- Accessible from anywhere.
Encapsulation helps to support the code, because a programmer always knows, which methods could have been used by the external code, and which can be safely modified or even removed.
- Type polymorphism
- A code which uses the
Menuobject can switch to aTreeMenuobject or aSlidingMenuwithout modifications.It’s possible, because the public interface of
Menuis inherited.
In JavaScript, unlike most other languages, there are several syntactically different ways to do implement the OOP concepts described above.