Object-Oriented JavaScript — Parts of a Class
By: John Au-Yeung
Tags: Technology, Programming, Software Development, Web Development, JavaScript

Photo by George Tseganis on Unsplash

JavaScript is partly an object-oriented language.

To learn JavaScript, we got to learn the object-oriented parts of JavaScript.

In this article, we’ll look at the parts of a JavaScript class.

Constructor

The constructor is a special method that’s used to create and initialize the object we create with the class.

The class constructor can call its parent class constructor with the super method.

super is used for creating subclasses.

Prototype Methods

Prototype methods are prototype properties of a class.

They’re inherited by instances of a class.

For instance, we can write:

class Car {

constructor(model, year) {

this.model = model;

this.year = year;

}



get modelName() {

return this.model

}



calcValue() {

return "2000"

}

}

We have 2 prototype methods within our Car class.

One is the modelName getter method.

And the other is the calValue method.

We can use them once we instantiate the class:

const corolla = new Car('Corolla', '2020');

console.log(corolla.modelName);

console.log(corolla.calcValue());

We created the Car instance.

Then we get the getter as a property.

And we called calcValue to get the value.

We can create class methods with dynamic names.

For instance, we can write:

const methodName = 'start'; class Car {

constructor(model, year) {

this.model = model;

this.year = year;

} get modelName() {

return this.model;

} calcValue() {

return "2000"

} [methodName]() {

//...

}

}

We pass in the methodName variable to the square brackets to make start the name of the method.

Static Methods

We can add static methods that can be run directly from the class.

For instance, we can write:

class Plane {

static fly(level) {

console.log(level)

}

}

We have the fly static method.

To run static methods, we can write:

Plane.fly(10000)

Static Properties

There’s no way to define static properties within the class body.

This may be added in future versions of JavaScript.

Generator Methods

We can add generator methods into our class.

For instance, we can make a class where its instances are iterable objects.

We can write:

class Iterable {

constructor(...args) {

this.args = args;

} *[Symbol.iterator]() {

for (const arg of this.args) {

yield arg;

}

}

}

to create the Iterable class that takes a variable number of arguments.

Then we have the Symbol.iterator method to iterate through this.args and return the arguments.

The * indicates that the method is a generator method.

So we can use the class by writing:

const iterable = new Iterable(1, 2, 3, 4, 5);

for (const i of iterable) {

console.log(i);

}

then we get:

1

2

3

4

5

We have created an instance of the Iterable class.

Then we looped through the iterator items by and logged the values.

Photo by George Tseganis on Unsplash

Conclusion

A class can have a constructor, instance variables, getters, instance methods, static methods, and generator methods.

Enjoyed this article? If so, get more similar content by subscribing to Decoded, our YouTube channel!