JavaScript Is Sweet

While reading Oliver Steele’s article on JavaScript Memoization this bit jumped out at me.


function Angle(radians) {this.setRadians(radians)}
Angle.prototype.setRadians = function(radians) {
  this.radians = radians;
  this.getDegrees.reset();
};
Angle.prototype.getDegrees = function() {
  return this.radians * 180 / Math.PI;
}
memoizeConstantMethod(Angle.prototype, 'getDegrees'); 

The reason that jumped out is that getDegrees is a function that returns a number, but in the above code you see this this.getDegrees.reset(). In other languages that would require a reset method on number objects, but not in JavaScript. In JavaScript methods are objects and, therefore, can have methods of their own1. This allows you to get the effect of high-order messaging without all the fuss.


  1. Is that the exact semantics that allows this functionality in JavaScript?