How to Add a Static Member Property in a JavaScript Class
Take a look at this quick article to learn about static member properties and how to use them in your JS code.
Join the DZone community and get the full member experience.
Join For FreeRecently while solving a problem, I came across a requirement to create a property in a JavaScript class, which needs to be shared by all the object instances. In the programming world, these types of properties are called Static Properties.
There are various scenarios when you need a static member property:
- When counting the number of object instances created from a particular class.
- When logging some information at the class level instead of object instance level, etc.
To create a static property, you should know two important things:
- A JavaScript class cannot have a member property. You can only create it using a constructor.
- Like the function constructor, a JavaScript class also has a prototype.
Well, if you are a champion of prototypes, you must have guessed the answer already. Any way, let us moAnywayard to see the implementation:
class Foo {
constructor(goal) {
this.goal = goal;
Foo.prototype.objectcount++;
}
}
Foo.prototype.objectcount = 0;
Let us talk through the implementation of Foo
class:
- We added a property to the
Foo
class prototype. - Incremented it in the constructor, as the constructor would be called each time an object is created.
Essentially to create a static property member, add a property to class prototype object. Now, creating an instance of Foo
class:
let f1 = new Foo(78);
console.log(f1.objectcount); // 1
let f2 = new Foo(45);
console.log(f2.objectcount)// 2
let f3 = new Foo(45);
console.log(f3.objectcount)// 2
console.log(f1.objectcount === f2.objectcount);// true
console.log(f2.objectcount === f3.objectcount);// true
You can see that now objectcount
keeps track of the count of all the objects. It is the same for all the object instances as well, hence, it can be termed as a static member property of a JavaScript class.
I hope you find this quick tip useful.
Published at DZone with permission of Dhananjay Kumar, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments