I’m trying to have a ‘class’ in JS which tracks how many instances of itself have been instantiated. I am attempting to do so like this…
var myNamespace = {};
myNamespace.myClass = function () {
//fails here as .getNetInstanceNo() not recognised...
var instanceNumber = myNamespace.myClass.getNextInstanceNo();
return {
instanceNo : function() { return instanceNumber; }
}
};
myNamespace.myClass.InstanceNo = 0; //static property?
//should the class itself have this method added to it...
myNamespace.myClass.prototype.getNextInstanceNo = function () { //static method?
return myNamespace.myClass.InstanceNo++;
};
var class1 = new myNamespace.myClass();
alert('class 1 has instance of ' + class1.instanceNo() );
However this fails as the getNextInstanceNo function is not recognised. Even though I think I’m adding it through the myClass.prototype.
What am I doing wrong?
prototypeis an object from which other objects inherit properties, as in when you create an instance of an object and that object doesn’t have a property/method, when called, the prototype of the class in which the object belongs to is searched for that property/method, here’s a simple example:As you said yourself, you don’t need to define getNextInstanceNo on prototype, since that’s not how static methods are defined on JavaScript, leave it right right there on the class itself, instead you can define the
instanceNomethod on prototype, here’s how: