Using classes and objects in JavaScript

Posted on 08-11-2018 by Nadir Latif


Source: https://www.w3schools.com/js/js_object_definition.asp

JavaScript Objects

All values in JavaScript are objects except for primitive values which have no methods and properties.

JavaScript defines 5 primitive data types, which are: string, boolean, null, undefined and number.

A JavaScript object is a collection of named values which are called properties. An object property can be a primitive, function or an object.

An object method is an object property containing a function definition.

Examples of creating JavaScript objects:


var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

var person = new Object();

/** The Object.create creates an object from an existing object */
const me = Object.create(person);

JavaScript objects are said to be mutable or changeable. When an object is assigned to another object, the assignment is done by reference. A new object is not created.

All JavaScript objects are descendants of the built in Object. All objects inherit properties that are in Object.prototype. These properties may be overridden by the objects. For example toString() method.

JavaScript classes

ES6 introduced a new keyword class, which allows creating classes using syntax that is common to most programming languages. The class syntax also allows inheritance. The class syntax is just a wrapper for object.prototype. It is implemented using the built in object.prototype property.

A major different between function declarations and class declarations is that functions are hoisted while classes are not. When we say that function declarations are hoisted, it means that a function can be called before it is defined, while a class cannot be used before it is defined. Following example shows how to declare and use a JavaScript class:


class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
    this.area = (width *height);
  }
  get area() {
    return this.calcArea();
  }
  set area(new_area) {
    this.area=new_area;
  }
}
const p = new Rectangle(10, 4);
let area = p.area;
p.area   = 20;

The constructor keyword defines a function that is automatically called when an object is instantiated.

The get and set keywords allows functions to be called when a property is read or updated.

Functions prefixed with static keyword are called on the class. They cannot be called on an instance of the class

The extends keyword allows a class to inherit properties and methods from another class. The super function should be the first line of code in the class constructor. It calls the parent class constructor