Categories:

#### Exposing inner functions to the outer world

Okay, suppose we have this arrangement:

```function Ftimes() {
function Ftimes3(x) {
return x * 3
}
function Ftimes4(x)
return x * 4
}
} ```

How can we allow people to access these inner functions directly?  It's actually easier than you might think -- just return a new Object() with these functions as methods of the object.

```function Ftimes() {
var FtimesObj = new Object()
function Ftimes3(x) {
return x * 3
}
function Ftimes4(x)
return x * 4
}
FtimesObj.Ftimes3 = Ftimes3
FtimesObj.Ftimes4 = Ftimes4
return FtimesObj
}
Multi = new Ftimes()```

Now, the Multi object has two methods: Multi.Ftimes3(x) and Multi.FTimes4(x).  This is how JavaScript's Math object is defined -- as a collection of methods and properties.  Check it out, as we ask the above code what Multi.Ftimes3(5) is:

```function Ftimes() {
var FtimesObj = new Object()
function Ftimes3(x) {
return x * 3
}
function Ftimes4(x) {
return x * 4
}
FtimesObj.Ftimes3 = Ftimes3
FtimesObj.Ftimes4 = Ftimes4
return FtimesObj
}

Multi = new Ftimes()