Static members in JavaScript

JavaScript static variables and methods are associated with the class, rather than with any object(similar to Java). Every instance of the same class has access to static members and rights to modify the values and method behavior at run-time. Let's see an example.

var Person = function(fName, lName) {
 this.firstName = fName;
 this.lastName = lName;
//Static variable.
Person.objectCounts = 0;
//Static method.
Person.getObjectInformation = function() {
 return Person.objectCounts;

Here the variable objectCounts is a static variable and getObjectInformation is a static method. If we create any object for Person class, the static variable "objectCounts" value is incremented by one. The method getObjectInformation is used for getting "objectCounts" value.

var person1 = new Person('Suriya', 'A');
var person2 = new Person('John', 'H');

Here there are two objects created for Person class. Let's try to access static members of Person class by using class name.

//Accessing static variable.
console.log('Accessing static variable by using class name : ' + Person.objectCounts);
//Accessing static method.
console.log('Calling static method by using class name : ' + Person.getObjectInformation());

JavaScript allows to modify value of the static variable and method behavior at run time. The changes in static members are immediately reflect to other objects. For an example, here I have modified getObjectInformation behavior and it's reflect to other object immediately.

//modifying static method
Person.getObjectInformation = function() {
 return "Bahaviour has modified : " + Person.objectCounts;

The final result of the above example is given below.