JavaScript Classes

ECMAScript 2015, also known as ES6, introduced JavaScript Classes

JavaScript Class Syntax

Use the keyword class to create a class.

Always add a method named constructor():

Syntax

class ClassName {
  constructor() { ... }
}

Example

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}

The example above creates a class named "Car".

The class has two initial properties: "name" and "year".

A JavaScript class is not an object.

It is a template for JavaScript objects.

Using a Class

When you have a class, you can use the class to create objects:

Example

let myCar1 = new Car("Ford", 2014);
let myCar2 = new Car("Audi", 2019);

Try it Yourself »

The example above uses the Car class to create two Car objects.

The constructor method is called automatically when a new object is created.

The Constructor Method

The constructor method is a special method:

  • It has to have the exact name "constructor"
  • It is executed automatically when a new object is created
  • It is used to initialize object properties
  • If you do not define a constructor method, JavaScript will add an empty constructor method.

    Class Methods

    Class methods are created with the same syntax as object methods.

    Use the keyword class to create a class.

    Always add a constructor() method.

    Then add any number of methods.

    Syntax

    class ClassName {
      constructor() { ... }
      method_1() { ... }
      method_2() { ... }
      method_3() { ... }
    }

    Create a Class method named "age", that returns the Car age:

    Example

    class Car {
      constructor(name, year) {
        this.name = name;
        this.year = year;
      }
      age() {
        let date = new Date();
        return date.getFullYear() - this.year;
      }
    }

    let myCar = new Car("Ford", 2014);
    document.getElementById("demo").innerHTML =
    "My car is " + myCar.age() + " years old.";

    Try it Yourself »

    You can send parameters to Class methods:

    Example

    class Car {
      constructor(name, year) {
        this.name = name;
        this.year = year;
      }
      age(x) {
        return x - this.year;
      }
    }

    let date = new Date();
    let year = date.getFullYear();

    let myCar = new Car("Ford", 2014);
    document.getElementById("demo").innerHTML=
    "My car is " + myCar.age(year) + " years old.";

    Try it Yourself »

    table.browserref { border-collapse:collapse;width:100%; } table.browserref th:first-child,table.browserref td:first-child{padding-left:16px} table.browserref th{ height:32px;background-repeat:no-repeat;background-position:center center;font-weight:normal;padding:11px 5px 11px 5px;vertical-align:middle; } table.browserref .bsChrome {background-image:url('/images/compatible_chrome.png');} table.browserref .bsEdge {background-image:url('/images/compatible_edge.png');} table.browserref .bsFirefox {background-image:url('/images/compatible_firefox.png')} table.browserref .bsSafari {background-image:url('/images/compatible_safari.png');} table.browserref .bsOpera {background-image:url('/images/compatible_opera.png')} table.browserref td{ text-align:center;padding:8px;vertical-align:top; }

    Browser Support

    The following table defines the first browser version with full support for Classes in JavaScript:

    Chrome 49 Edge 12 Firefox 45 Safari 9 Opera 36
    Mar, 2016 Jul, 2015 Mar, 2016 Oct, 2015 Mar, 2016

    You will learn a lot more about JavaScript Classes later in this tutorial.