Introduction And Learning Goals

Hello! Today's journey ventures into the cornerstone of JavaScript's object-oriented fundamentals: Encapsulation. This concept establishes a protective barrier around an object's data, keeping it untouched by the external code ecosystem. Let's take a closer look:

  1. The importance of encapsulation: Delivering robust, versatile, and intuitive code.
  2. Private Data: How JavaScript protects certain data from external access.
  3. Getters and Setters: These are the tools that control data access and modification for the protection and abstraction of data.
Why Encapsulation?

Encapsulation fulfills a threefold role: it maintains integrity, controls data modification, and provides data abstraction — interfaces accessible to users. Think about using a cell phone — you interact with an interface without meddling with its circuits. Following this same logic, encapsulation safeguards the internal implementation while exposing safe interfaces.

Private Data In JavaScript

Now, let's talk about Private Data: In JavaScript, due to the lack of native support, we simulate private data by prefixing an underscore (_) to variable names, indicating that direct access is not recommended. Let's illustrate this with a Car class, introducing a private attribute, _speed:

In this class, _speed is deemed private — we shouldn't access it directly.

Using Getters And Setters

Getters and Setters are gatekeepers controlling access to private data. In our Car class, a getter function retrieves the _speed attribute. In contrast, a setter function modifies it as follows:

These methods allow us to retrieve or set the car's speed safely.

Bringing It All Together

With these concepts at hand, we can construct a Car class that showcases encapsulation:

And here is how we will use this class (note - when using get/set methods, we don't use parenthesis):

The code above synergizes private variables, along with getters and setters, encapsulating the inner workings of the Car class.

Lesson Summary And Practice

Well done, vigilant traveler! By exploring encapsulation, you've delved deeper into JavaScript's object-oriented programming. Thanks to this lesson, your toolbelt now includes:

  • An understanding of private data.
  • Knowledge of the roles of getters and setters.

Inscribe these lessons in your programming mind and continue your journey! Hands-on exercises await you — they offer practical experience and solidify your understanding of the concepts learned. Keep zooming along the path to becoming a JavaScript pro — the journey is worth it!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal