Rectangle Constructor
This is an experiment in making a more succinct access to getter methods. Check out the definition of `Rectangle.prototype.area()`.
by Kaleb Hornsby
HTML
<script>
var rectangle = [new Rectangle(3, 5), new Rectangle(4, 2)];
function write(n){
document.write("<div><em>A</em><sub>Rect<sub>" +
n + "</sub></sub> = " +
rectangle[n].area() +
"</div>");
}
write(0);
write(1);
</script>
JavaScript
if (!this.Rectangle) this.Rectangle = (function() {
function Rectangle(height, width) {
/**
* PRIVATE METHODS
**/
function getHeight() {
return height;
}
function getWidth() {
return width;
}
/**
* PRIVELEGED METHODS
**/
this.getHeight = getHeight;
this.height = function(n) {
return n === undefined ? this.getHeight() : this.setHeight(n);
};
this.height.valueOf = getHeight;
this.height.toString = getHeight;
this.setHeight = function(n) {
height = n > 0 ? n : 0;
};
this.getWidth = getWidth;
this.width = function(n) {
return n === undefined ? this.getWidth() : this.setWidth(n);
};
this.width.valueOf = getWidth;
this.width.toString = getWidth;
this.setWidth = function(n) {
width = n > 0 ? n : 0;
};
/**
* PROCEDURAL STUFF
**/
this.setHeight(height);
this.setWidth(width);
}
Rectangle.prototype.area = function() {
return this.height * this.width;
};
return Rectangle;
})();