If you want to nest functions inside function - you CAN, but you should learn javascript syntax, how lexical scope and variable hoisting works, and overall - read Douglas Crockford's articles (or watch his videos).
The code you have shown will not work, try to look at my modification of it, and understand the difference.
var Main = function() {
/* this function is a constructor */
var m = this; // store scope
// do your init stuff
m.boringCollection = {
/* simple object with function inside */
/* notice JSON style formatting */
doStuff : function(){
//do something
},
doOtherStuff : function(){
//do something else
};
};
m.coolConstructor = function () {
var cc = this; // store scope
var sleep = true; // just an example variable
cc.moveMyself = function(){
//do something
};
cc.init = function() {
sleep = false; // just an example
cc.moveMyself(); // will work
cc.work(); // will FAIL, because function work is defined after its called
};
cc.work = function() {
// do some work
};
};
};
var main = new Main(); // make new instance of Main
main.boringCollection.doOtherStuff(); // will work
main.coolConstructor.init(); // will NOT work
var scrappy = new main.coolConstructor(); // make new instance of m.coolConstructor
scrappy.init(); // will work
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…