JavaScript is built on objects. Whether you’re storing data, organizing functionality,
or working with modern ES6 classes, a solid understanding of objects is essential.
In this article, we’ll cover objects, prototypes, the this
keyword, and classes
with clear examples.
Objects in JavaScript
Objects are collections of key–value pairs. They can contain both data and functions, making them versatile structures for many tasks.
const user = {
name: "Ava",
age: 28,
greet() {
return `Hi, I'm ${this.name}`;
}
};
Creating Objects
The simplest way to create objects is with object literals. You can also use spread syntax to clone or extend them:
const person = { name: "Kai", score: 42 };
const clone = { ...person }; // shallow copy
Prototypes
JavaScript uses prototypal inheritance, meaning objects can inherit behavior from other objects through the prototype chain.
const animal = { move() { return "moving"; } };
const dog = Object.create(animal);
dog.bark = () => "woof";
The this
Keyword
The value of this
depends on how a function is called.
This can lead to unexpected results when functions are detached from their objects.
const obj = {
value: 10,
show() { return this.value; }
};
obj.show(); // 10
const fn = obj.show;
fn(); // undefined (loses "this")
Classes
ES6 introduced class
syntax as a cleaner way to create objects
and manage inheritance. Under the hood, classes still rely on prototypes.
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, I'm ${this.name}`;
}
}
Inheritance with Classes
Classes can extend other classes, enabling structured inheritance.
class Animal {
speak() { return "generic sound"; }
}
class Dog extends Animal {
speak() { return super.speak() + " Woof!"; }
}
Notes & Tips
- Shallow copies don’t clone nested objects—use deep cloning when necessary.
this
can be lost in callbacks; consider.bind()
or arrow functions.- Classes must always be instantiated with
new
.
Conclusion
Objects and classes are the backbone of JavaScript development.
By mastering prototypes, the this
keyword, and class inheritance,
you’ll be able to write more structured and maintainable code.
Comments
Post a Comment