JavaScript classes provide a way to create blueprints for objects, making code more organized and reusable. This blog explores the fundamentals of classes in JavaScript, covering constructors, methods, inheritance, and more.
JavaScript classes were introduced in ECMAScript 2015 (ES6) to provide a more familiar and convenient syntax for creating objects and dealing with inheritance. Let's dive into the key concepts.
To create a class in JavaScript, you use the class
keyword followed by the class name. Here's an example:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound`);
}
}
Once you have a class, you can create instances of that class using the new
keyword:
const dog = new Animal('Dog');
dog.speak(); // Output: Dog makes a sound
JavaScript classes support inheritance through the extends
keyword. Here's an example:
class Dog extends Animal {
constructor(name, breed) {
super(name);
this.breed = breed;
}
displayInfo() {
console.log(`${this.name} is a ${this.breed}`);
}
}
const goldenRetriever = new Dog('Buddy', 'Golden Retriever');
goldenRetriever.speak(); // Output: Buddy makes a sound
goldenRetriever.displayInfo(); // Output: Buddy is a Golden Retriever
You can define static methods on a class using the static
keyword. These methods are called on the class itself, not on instances of the class:
class MathUtils {
static add(x, y) {
return x + y;
}
}
console.log(MathUtils.add(2, 3)); // Output: 5
JavaScript classes also support getters and setters, allowing you to define computed properties and control access to class properties:
class Circle {
constructor(radius) {
this.radius = radius;
}
get diameter() {
return this.radius * 2;
}
set diameter(value) {
this.radius = value / 2;
}
}
const circle = new Circle(5);
console.log(circle.diameter); // Output: 10
JavaScript classes are a powerful feature that can help you write more maintainable and structured code. By understanding how classes work and leveraging their capabilities, you can take your JavaScript skills to the next level.