Teachnique
      CourseRoadmaps
      Login

      OverviewPlacementSyntaxHello WorldConsole.log()CommentsVariableslet StatementConstantsData TypesType ConversionsStrict ModeReserved Keywords

      OperatorsArithmetic OperatorsComparison OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsConditional Operatorstypeof OperatorNullish Coalescing OperatorDelete OperatorComma OperatorGrouping OperatorYield OperatorSpread OperatorExponentiation OperatorOperator Precedence

      If...ElseWhile LoopsFor LoopFor...in LoopFor...of LoopLoop ControlBreak StatementContinue StatementSwitch CaseUser Defined Iterators

      FunctionsFunction ExpressionsFunction ParametersDefault ParametersFunction() ConstructorFunction HoistingArrow FunctionsFunction InvocationFunction call() MethodFunction apply() MethodFunction bind() MethodClosuresVariable ScopeGlobal VariablesSmart Function Parameters

      NumberBooleanStringsArraysDateMathRegExpSymbolSetsWeakSetMapsWeakMapIterablesReflectTypedArrayTempate LiteralsTagged Templates

      Objects OverviewClassesObject PropertiesObject MethodsStatic MethodsDisplay ObjectsObject AccessorsObject ConstructorsNative PrototypesES5 Object MethodsEncapsulationInheritanceAbstractionPolymorphismDestructuring AssignmentObject DestructuringArray DestructuringNested DestructuringOptional ChainingGlobal ObjectMixinsProxies

      HistoryVersionsES5ES6ECMAScript 2016ECMAScript 2017ECMAScript 2018ECMAScript 2019ECMAScript 2020ECMAScript 2021ECMAScript 2022

      CookiesCookie AttributesDeleting Cookies

      Browser Object ModelWindow ObjectDocument ObjectScreen ObjectHistory ObjectNavigator ObjectLocation ObjectConsole Object

      Web APIHistory APIStorage APIForms APIWorker APIFetch APIGeolocation API

      EventsDOM Events

      Feedback

      Submit request if you have any questions.

      Course
      Classes

      JavaScript Tutorial

      This JavaScript tutorial is crafted for beginners to introduce them to the basics and advanced concepts of JavaScript. By the end of this guide, you'll reach a proficiency level that sets the stage for further growth. Aimed at empowering you to progress towards becoming a world-class software developer, this tutorial paves the way for a successful career in web development and beyond.

      Classes

      JavaScript Classes

      The JavaScript classes are a blueprint or template for object creation. They encapsulate the data and functions to manipulate that data. We can create the object using classes. Creating an object from a class is referred to as instantiating the class. In JavaScript, the classes are built on prototypes. The classes are introduced to JavaScript in ECMAScript 6 (ES6) in 2009.
      For example, you can think about writing code to represent the car entity. A code can contain the class having car properties. For different cars, you can create an instance of the class and initialize the car properties according to the car model.
      Before ES6, the constructor function was used to define a blueprint of the object. You can define the constructor function as shown below.
      function Car(brand) { // Constructor function
      this.brand = brand; // property initialization
      }
      const carObj = new Car("Audi"); // Creating an object

      Defining JavaScript Classes

      The syntax of the class is very similar to the constructor function, but it uses the 'class' keyword to define the class. As we can define a function using function declaration or function expression, the classes are also can be defined using class declaration or class expression.

      Syntax

      The syntax of class definition in JavaScript is as follows
      // class declaration
      class ClassName {
      // Class body
      }
      //Class expression
      const ClassName = class {
      // class body
      }
      A 'ClassName' is a class name in the above syntax.
      A JavaScript class is a function, but you can't use it as a regular function.

      Type of JavaScript Classes

      A JavaScript class is a type of function. In the example below, we used the 'typeof' operator to get the type of the class. It returns the 'function’, which you can observe in the output.
      <!DOCTYPE html>
      <html>
      <body>
      <p id = "output"> The type of the car class is: </p>
      <script>
      class Car {
      // Class body
      }
      document.getElementById("output").innerHTML += typeof Car;
      </script>
      </body>
      </html>

      Output

      The type of the car class is: function

      The constructor() method

      When you use the function as an object blueprint, you can initialize the object properties inside the function body. Similarly, you need to use the constructor() method with the class to initialize the object properties.
      Whenever you create an instance of the class, it automatically invokes the constructor() method of the class.
      In below example, we use the constructor() method to create a Car class
      class Car {
      constructor(brand) {// Defining the constructor
      this.brand = brand;
      }
      }
      The constructor() method has no specific name but can be created using the 'constructor' keyword. You can initialize the class properties using the 'this' keyword inside the constructor function.

      Creating JavaScript Objects

      To create an object of a JavaScript class, we use new operator followed by the class name and a pair of parentheses. We can pass thee arguments to it also.
      Let's create an object called myCar as follows
      const myCar = new Car("Audi");
      The this keyword inside the constructor function refers to an object that is executing the current function.

      Example: Creating class objects without arguments

      In the example below, we have defined the 'Car' class. The class contains the constructor and initializes the properties with default values.
      After that, we have created the instance of the class, and you can observe it in the output.
      <!DOCTYPE html>
      <html>
      <body>
      <p id = "output"> </p>
      <script>
      // creating Car class
      class Car {
      constructor() {
      this.brand = "BMW";
      this.model = "X5";
      this.year = 2019;
      }
      }
      // instantiate myCar object
      const myCar = new Car();
      // display the properties
      document.getElementById("output").innerHTML =
      "Car brand is : " + myCar.brand + "<br>"
      +"Car model is : " + myCar.model + "<br>"
      +"Car year is : " + myCar.year + "<br>";
      </script>
      </body>
      </html>

      Output

      Car brand is : BMW
      Car model is : X5
      Car year is : 2019
      If you want to initialize the class properties dynamically, you can use the parameters with the constructor() method.

      Example: Creating class objects with arguments

      In the example below, we have defined the 'Car' class. The constructor() method of the class takes 4 parameters and initializes the class properties with parametric values.
      While creating the 'Car' class instance, we passed 4 arguments. In this way, you can initialize the class properties dynamically.
      <!DOCTYPE html>
      <html>
      <body>
      <p id = "output"> </p>
      <script>
      class Car {
      constructor(brand, model, price, year) {
      this.brand = brand;
      this.model = model;
      this.price = price;
      this.year = year;
      }
      }
      const carObj = new Car("BMW", "X5", 9800000, 2019);
      document.getElementById("output").innerHTML +=
      "Car brand : " + carObj.brand + "<br>"
      + "Car model : " + carObj.model + "<br>"
      + "Car price : " + carObj.price + "<br>"
      + "Car year : " + carObj.year + "<br>"
      </script>
      </body>
      </html>

      Output

      Car brand : BMW
      Car model : X5
      Car price : 9800000
      Car year : 2019

      JavaScript Class Methods

      You can also define the methods inside the class, which can be accessed using the class instance.

      Syntax

      Follow the syntax below to define methods inside the class.
      class car {
      methodName(params) {
      // Method body
      }
      }
      obj.methodName();
      In the above syntax, 'methodName' is a dynamic name of the method. To define a class method, you don't need to write any keyword like 'function' before the method name.
      To invoke the class method, you need to use the instance of the class. Here, 'obj' is an instance of the class. You can also pass the parameters to the method.

      Example

      The example below demonstrates how to pass parameters to the class methods.
      Here, we have defined the updateprice() method to update the price of the car. So, while invoking the updateprice() method, we pass the new price as an argument and use it inside the method body to update the price.
      You can see the original and updated price of the car in the output.
      <!DOCTYPE html>
      <html>
      <body>
      <p id = "output"> </p>
      <script>
      class Car {
      constructor(brand, model, price, year) {
      this.brand = brand;
      this.model = model;
      this.price = price;
      this.year = year;
      }
      
      updateprice(newPrice) {
      this.price = newPrice;
      }
      }
      const myCar = new Car("BMW", "X5", 9800000, 2019);
      document.getElementById("output").innerHTML +=
      "The car price is : " + myCar.price + "<br>";
      myCar.updateprice(8800000); // updating price
      document.getElementById("output").innerHTML +=
      "After updating the car price is : " + myCar.price + "<br>";
      </script>
      </body>
      </html>

      Output

      The car price is : 9800000
      After updating the car price is : 8800000

      JavaScript Class Hoisting

      In JavaScript, the declaration of the class is not hoisted at the top of the code. So, you always need to define the class before you use it.
      const carObj = new Car(); // This will generate an error.
      class Car {
      }
      You can try to run the above code. It will generate a reference error as the car class is used before its initialization.

      Strict Mode with Classes

      The strict mode is used to avoid unusual errors. The class code is always in the strict mode by default.
      Let's understand it via the example below.
      class numbers {
      constructor() {
      num = 90; // Defining variable without var keyword
      }
      }
      const numObj = new numbers();
      In the above code, we define the 'num' global variable in the constructor() method. In the strict mode of JavaScript, it is not allowed to define the variables without using the var, let, or const keywords. So, the above code will throw an error.