OOP in JAVASCRIPT

Beribey
3 min readJan 28, 2021

We will discuss three features of OOP, compare their implementation in Java and JavaScript.

Photo by Christopher Gower on Unsplash

Because the Wiki is already available, I just copied it, do not explain again around:

  • Encapsulation: Hide information. This property does not allow the user of objects to change the intrinsic state of an object. Only the internal methods of an object allow to change its state. It is up to the code writer to allow the external environment to influence the internal data of an object. This is property to ensure the integrity of the object.
  • Inheritance: This property allows one object to make available properties that another object already has through inheritance. This allows objects to share or extend existing properties without having to redefine. However, not all object-oriented languages ​​have this property.
  • Polymophism: Demonstrated through sending the message (message). Sending these messages is comparable to calling the inner functions of an object. The methods used to respond to a message will depend on the object to which the message is sent will have a different response. The programmer can define a property (eg, through the names of methods) for a series of objects that are close together, but when executed using the same name, the execution of each object will automatically. happened according to the characteristics of each object without confusion.
OOP in JAVASCRIPT

OOP in Java

As you all know, Java is an object-oriented language, so implementing OOP features is very simple and fast, easy to understand.
Enclosure in Java is demonstrated by giving a way to declare private fields, only accessible internally through get, set functions.

Inheritance and polymorphism are also quite simple, just extend and write the new function override (keep an eye on the access modifier private and protect, I will compare it with JavaScript).

OOP in JavaScript

JavasSript is the opposite, a number of tricks are required to implement these features. In JavaScript, to implement encapsulation, we can create a Constructor Function, which encapsulates all the fields and functions into an object. Usually, you usually declare the following:

With these declarations, closure is not guaranteed. Properties can be accessed and changed from outside. Here, we have to use local variables.

However, this local variable is only accessible in Constructor Function, it is equivalent to private fields in Java. In javascript, there is no way to create protected fields (Only accessible from derived class) like Java and C #. Inheritance is more sida, as I mentioned in the prototype post, in JavaScript there is no extends keyword nor class, we must use the prototype to inherit.

Conclusion

If you are annoyed with JavaScript, you can try learning TypeScript, CoffeeScript or ES6.

--

--

Beribey

Always be nice to anybody who has access to my toothbrush.