Skip to main content

Command Palette

Search for a command to run...

Understanding Object-Oriented Programming in JavaScript

A beginner-friendly guide with real-world examples

Updated
•5 min read•View as Markdown
Understanding Object-Oriented Programming in JavaScript

Programming often feels confusing when we first encounter big terms like Object-Oriented Programming. Many beginners see the term OOP and immediately think it must be something complicated.

But the truth is… OOP is actually based on a very simple idea that we already understand from real life.

Let me explain it through a small story.


A Small Story Before We Begin

Imagine a car factory.

Before any car is built, engineers first design a blueprint.
That blueprint defines everything about the car:

  • The model name

  • The engine type

  • The color

  • The speed

  • How the car starts and stops

But the blueprint itself is not a real car.

It is just a plan.

From that single blueprint, the factory can create thousands of cars.

Each car is a real object created from the same blueprint.

Some cars might be red, some might be blue, some might be black — but they all follow the same design.

And this idea…
is exactly how Object-Oriented Programming works.


What is Object-Oriented Programming (OOP)?

Object-Oriented Programming (OOP) is a programming style where we structure our code using objects.

Instead of writing scattered functions and variables everywhere, we organize things into objects that represent real-world entities.

For example:

Real World In Code
Car Car object
Student Student object
Bank Account BankAccount object
User User object

Each object contains:

  • Properties → data about the object

  • Methods → actions the object can perform

This makes our code:

  • easier to understand

  • easier to maintain

  • easier to reuse

And that is the beauty of OOP.


What is a Class in JavaScript?

If objects are real cars, then a class is the blueprint.

A class defines how an object should look and behave.

It describes:

  • what properties the object should have

  • what methods the object can perform

Think of a class as a template for creating objects.

Example: A Car Class

class Car {
  brand = "Toyota";
  speed = 120;

  drive() {
    console.log("The car is driving");
  }
}

This class describes what a car should contain.

But remember:

Right now no car exists yet.

We only created the blueprint.


Creating Objects Using Classes

To create real objects from a class, we use the new keyword.

This process is called instantiation.

const car1 = new Car();
const car2 = new Car();

Now we have two objects:

  • car1

  • car2

Both are created using the same blueprint.


Constructor Method

Often we want each object to have different values.

For example:

  • Different car names

  • Different colors

  • Different speeds

This is where the constructor comes in.

A constructor is a special method that runs automatically when an object is created.

Example

class Car {
  constructor(brand, speed) {
    this.brand = brand;
    this.speed = speed;
  }

  drive() {
    console.log(`\({this.brand} is driving at \){this.speed} km/h`);
  }
}

Now we can create different cars:

const car1 = new Car("Toyota", 120);
const car2 = new Car("BMW", 200);

Each object now has its own data.


Methods Inside a Class

Methods are simply functions inside a class.

They describe what an object can do.

Example:

class Person {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

Creating objects:

const person1 = new Person("Alice");
person1.greet();

Output:

Hello, my name is Alice

Here:

  • name is a property

  • greet() is a method


Basic Idea of Encapsulation

Encapsulation simply means keeping data and behavior together inside a single unit (object).

Instead of spreading variables and functions everywhere, we group them inside a class.

Example:

class BankAccount {
  constructor(owner, balance) {
    this.owner = owner;
    this.balance = balance;
  }

  deposit(amount) {
    this.balance += amount;
  }
}

Here:

The data:

  • owner

  • balance

The behavior:

  • deposit()

All belong to the same object.

This keeps our code organized and clean.


Why OOP is Powerful

Imagine building a system with 10,000 users.

Without classes, you would have to manually create every user structure.

But with OOP:

You create one class, and then generate unlimited objects.

That means:

  • less code

  • more structure

  • better readability

  • easy maintenance

This is why OOP is widely used in modern software development.


Assignment for Practice

Now it’s your turn.

Try creating a Student class.

Step 1: Create the class

class Student {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  showDetails() {
    console.log(`Name: \({this.name}, Age: \){this.age}`);
  }
}

Step 2: Create multiple students

const student1 = new Student("Rahul", 20);
const student2 = new Student("Anita", 22);
const student3 = new Student("John", 21);

Step 3: Call the method

student1.showDetails();
student2.showDetails();
student3.showDetails();

Output:

Name: Rahul, Age: 20
Name: Anita, Age: 22
Name: John, Age: 21

And just like that, you created multiple objects using one blueprint.


Visual Idea (Class → Objects)

        Student Class
        (Blueprint)
             |
     -------------------
     |        |        |
  student1  student2  student3

One class → Many objects.


Final Thoughts

When beginners first hear about Object-Oriented Programming, it sounds intimidating.

But when you look closely, it mirrors the real world.

A blueprint creates objects.

A class creates instances.

Once you start thinking this way, programming becomes much more natural.

And that moment — when the concept finally clicks — is one of the most satisfying experiences in learning software development.

So take your time, experiment with classes, and build small examples.

Because every complex system in the world…

started with a simple blueprint.