Properties can also have methods as values and these methods can be functions.
e.g.
function myCirc(){
this.x=myArea;
}
function myArea(r){
return r*r*3.1415;
}
a=new myCirc();
var output=a.x(12);
output = 452.376
So what is happening here?
1.var output=a.x(12);
// The argument, 12, is associated with a property 'x' in 'a'.
2. 'a' is a variable which references a new instance of 'myCirc'.
3. The property 'x' is not explicitly defined for 'a' in terms of the reference 'a'.
// I could have written: a.x = aValue; but this is not found for x in a.
4. The original function myCirc does contain a property 'x'. ('this.x')
5. This property is a method, myArea and it computes the area of a circle with radius 12.
So here is the path of the argument '12'.
No explicitly defined property 'x' exists for 'a'.
So the original 'myCirc' is checked for the property x.
It has been defined in myCirc: 'this.x', and it is a function - myArea.
So output = myArea: return 12*12*3.1415 = 452.376.