17

Everything you should know about Javascript classes

 4 years ago
source link: https://www.blog.duomly.com/what-are-javascript-classes-and-how-to-use-them/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

What are Javascript classes and how to use them

by Anna Danilec | Sep 9, 2019 |Javascript, Quick help

javascript-classes.png

Classes are a fundamental concept in object-oriented programming, and they are used in many programming languages, but it wasn’t like this in Javascript. Until ECMAScript2015, known as ES6, classes didn’t exist in JS. In 2015 with the update classes were introduced as syntactic sugar for existing prototype inheritance model. What classes bring is a more comfortable and more readable syntax for objects and inheritance. 

Class in Javascript is a type of function, but instead of initializing it with the  function  keyword,  the class  keyword is used. 

In this article, I’ll try to provide an introduction to what classes are and how we can use them. It will explain:

  • defining classes,
  • constructor method,
  • defining methods,
  • extending classes and super keyword,
  • getters and setters.

Let’s start!

* To check the code execution open the console in the browser and try to execute the code ( if you are using Google Chrome right-click on the page and select Investigate)

1. Defining classes

To define a class, we have to start from a class keyword, followed by the name of the class, then curly braces after the name. Next, inside the defined class, we set a constructor with properties assigned, which is called whenever a class is initialized. Let’s take a look at a code example:

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

In the code example above, the class Person is defined, with the constructor, where we set name and age properties. To initialize this class, we have to use a new keyword with the class name, and parameters like it work with the object. Let’s see the code example:

var person = new Person('Peter', 25);

In the code above we initialized a class with two parameters, name= “Peter” and age= “25” and assigned it to the variable person.

What is worth to mention, although classes are functions, hoisting doesn’t work in this case. It means that every class has to be defined first and initialized next. Otherwise, the Reference Error will appear. Also, it’s good to remember that code inside the class is in ‚strict mode’. It will throw more errors and help us to avoid mistyping or syntax errors.

2. Constructor method

While defining a class, we used a constructor. Now let’s explain what is constructor in Javascript class. It is a method which has to be included in a class when we define it, and it is a method where properties are assigned to a scope of the class. Constructors require a  new  keyword to work. It means constructor will be initialized if we will initialize the class as we did in the example above. Also, only one constructor can be used per class. If you don’t add a constructor inside your class, Javascript will do this for you with empty one: constructor() {}

3. Defining methods

Inside a class, we can define methods different than the constructor. Let’s see how it looks in the code:

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

  introduceYourself() {
    return 'Hello, my name is ' + this.name;
  }
}

var person = new Person('Mark', 30);
person.introduceYourself(); // returns 'Hello, my name is Mark'

In the example above, I’ve created a new method in Person class, called  introduceYourself . This method takes this.name and returns the string. As you can see, creating method is similar to creating a function, but without using a function keyword. In the code example, you can see how the method is called.

There is also a possibility to create static methods in the class. The difference is that static methods can be accessed only from the class, not from the object created by the class. Let’s check the code example to find out how to define a static method:

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

  static howAreYou() {
    return 'I am okey, and you?';
  }
}

Person.howAreYou(); // returns 'I am okey, and you?';
var person = new Person('Mark', 30);
person.howAreYou(); // returns an error

To let the class know that the method we define should be static, we have to add a static keyword at the beginning of method definition. Then, you can see it will return an error if you try to call it to form the object and if you access it from class directly then it’s okay, and the result will be as expected.

4. Extending classes and super keyword

Sometimes it happens that we want to „copy” the class and add some new methods or parameters to it. In this case extending the class comes very handy. We can access all the features of the parent class and also add some new ones. To create a subclass form a parent class we use extend keywords. Let’s take a look how it works in the example:

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

  yourAge() {
    return 'I am ' + this.age;
  }
}

class Kid extends Person {
  howOldAreYou() {
    return super.yourAge() + '. I am a child';
  }

  isAdult() {
    if (this.age >= 18) {
      return true;
    } else {
      return false;
    }
  }
}

var child = new Kid('Mary', 12);
child.howOldAreYou(); // returns 'I am 12. I am a child';
child.isAdult(); // returns false;

In the code above we extended a Person class to Kid class and used yourAge() method inside Kid class howOldAreYou(), and this was used with a super keyword which enabled parent methods usage in child class. Also property this.age is used to check condition in isAdult() functions.

5. Getters and setters

Like in objects in the class, we may also use getters and setters. Getter is created using get keyword, and setter is created by using a set keyword in the beginning. It’s a great idea to use getters and setters when we want to check or modify the value before it will be assigned to the object. Let’s check the code to find out how it works:

class Person {
  constructor(name) {
    // setter is called
    this._name = name;
  }

  get name() {
    return this._name;
  }

  set name(value) {
    this._name = value;
  }
}

var newPerson = new Person('Mary');
newPerson.name; // returns 'Mary'
newPerson.name = 'Peter';
newPerson.name; // returns 'Peter'

In the example above, we can see getter and setter for the name property. In constructor, when this._name is invoked, the setter is called to set the name. Getter and setter cannot have the same name as the property they set or get. Also if you want to use the setter to set a new property value, use it without parenthesis just like the property.

Conclusion

Classes feature in Javascript is relatively new, but the functionality of classes was there all the time, as prototype inheritance model and constructor functions. Now the syntax is way more friendly and more comfortable to create a clean, readable code. In this article, I went through the most important information about Javascript class, starting from defining a class, through constructor and methods, extending classes and finishing on using getters and setters.I hope knowledge from this article will clarify the usage of class in Javascript and help you to implement your code using class syntax.I think the implementation of classes came very handy for developers, but the same functionality could be achieved without it.

Do you think it was a good idea to implement a class feature in ES6?

blog-loops-in-python-thank-you.png

Thank you for reading.

This article was provided by our teammate Anna.

Start learning now!

Go to course

angular-app-tutorial-400x250.jpg

Angular tutorial

Some time ago, I created the first tutorial about React.js where I showed you how to create an easy React.js application using an existing API and Bootstrap for styling. The positive response for this article brought me to the idea of creating a series of simple...

eyeglasses-in-front-of-laptop-computer-1181253-400x250.png

What skills you need to be a good developer?

Every profession has special requirements; for example, to be a doctor, you have to know biology, finish medical university, but besides the hard skills, as a doctor, you have to be emphatic. As a teacher, you need to have qualifications to work with kids, but you...

angular-app-tutorial.jpg

Angular tutorial

Some time ago, I created the first tutorial about React.js where I showed you how to create an easy React.js application using an existing API and Bootstrap for styling. The positive response for this article brought me to the idea of creating a series of simple...

react-performance.jpg

React.js performance tutorial

Building applications sometimes can be a bit challenging, especially when we need to build a fast and good-quality application. These times it can be necessary, especially when search engines can give bonus SEO points for faster working apps, and it can help us to...

vue-app.png

Vue.js tutorial: How to create Vue.js app in 5 minutes?

Vue.js is getting more and more popular, becoming a meaning competitor to frameworks like Angular or React.js. As a beginner-friendly front-end framework, it successfully conquers the hearts of junior front-end developers and people who just started to learn front-end...

images-filters.png

8 CSS image filters with code examples

Using images, we can create an atmosphere, arouse happiness, smile, sadness, or any different emotion. With images, we can show a lot, and tell a lot as well; that’s why pictures are so widely used in the websites and applications. Designers take care of how users...

cssgrid.png

CSS Grid tutorial

When we build front-end, always we need to create a structure of our page, and very often, we need to create any grid. We can position elements in a few ways. For example, in the previous article I showed you how we could do it via flexbox. So, today, I would like to...


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK