Reputation: 81721
I like to learn the difference between Class Property and Prototype in Javascript what I mean is shown in the code :
function Rectangle(x, y) {
this.width = x;
this.height = y;
}
Rectangle.UNIT = new Rectangle(1, 1);
Rectangle.prototype.UNIT = new Rectangle(1, 1);
The thing I know is prototype is working like inherit object which means UNIT will be shown all the instances from now on but Rectangle.UNIT = new Rectangle(1, 1);
code doesn't do the same thing ?
Upvotes: 10
Views: 3558
Reputation: 1614
Class-Based vs. Prototype-Based Languages @ Mozilla Developer Center. Neat!
Upvotes: 2
Reputation: 4800
Rectangle.UNIT
is a static class property. It can only ever be accessed on the Rectangle class object. It won't be accessible on any instances of Rectangle.
Rectangle.prototype.UNIT
is a prototype property and can be accessed on instances of Rectangle.
If you make a class Square
that inherits from Rectangle
, any instances of Square
will share the same prototype property, but not any static class properties.
You may find these articles helpful (though maybe a little obscure):
Upvotes: 19
Reputation: 5342
Rectangle.UNIT is like a class static member, whereas Rectangle.prototype.UNIT is a local member. Looks like you want Rectangle.UNIT in your case, because you only need one static instance of the object.
Upvotes: 1