I defined a class like this at first:
function mapTile(nx,ny)
{
//members
this.x = nx;
this.y = ny;
//methods
this.prototype.visible = function(){return true;};
this.prototype.getID = function(){return y*tiles_per_line+x;};
this.prototype.getSrc = function(){return 'w-'+this.getID+'.png';}
};
Which throws an exception when I try to create an object:
t=new mapTile(1,1)
TypeError: Cannot set property 'visible' of undefined
in Chromium and fails silently in Firefox(with firebug)
This works OK though:
function mapTile(nx,ny)
{
//members
this.x = nx;
this.y = ny;
};
//methods
//this.prototype.xx=1;
mapTile.prototype.visible = function(){return true;};
What is the proper way to implement prototype methods inside the body?
What is the proper way to implement prototype methods inside the body?
You may not like this answer: don't define them inside the body, since that would re-define them every time the constructor runs for that object. Define them like you have working, with objectType.prototype...
after it's declared.
Prototype methods are there specifically to be shared amongst all instances, what you're doing is somewhere in-between, you either want them declared inside specific to that instance, like this:
function mapTile(nx,ny)
{
//members
this.x = nx;
this.y = ny;
//methods
this.visible = function(){return true;};
this.getID = function(){return y*tiles_per_line+x;};
this.getSrc = function(){return 'w-'+this.getID+'.png';}
}
Or shared on the prototype outside, like this:
function mapTile(nx,ny)
{
//members
this.x = nx;
this.y = ny;
}
mapTile.prototype.visible = function(){return true;};
mapTile.prototype.getID = function(){return y*tiles_per_line+x;};
mapTile.prototype.getSrc = function(){return 'w-'+this.getID+'.png';}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With