Functies zijn scopes in JavaScript. U kunt vanuit een functie geen functie oproepen, tenzij u het als een methode declareert. Sommigen hebben gesuggereerd dat je objecten of rare patronen gebruikt, die al dan niet zijn wat je wilt ...
Als je een "klasse-achtige" functie met openbare/private methoden en variabelen wilt, doe dit dan:
//Declare your "class"
function Foo(specs) {
//Can do whatever you want with specs
//jQuery uses it to initialize plugin data ;)
//These are examples of private variables
var a = 1;
var b = "b";
//These are examples of public variables
this.aa = 1;
this.bb = "b";
//This is a private method
function Bar_Private(p0,p1) {...}
//This is a public method
this.Bar_Public = function(p0,p1) {...}
}
//Now to use it....
//Create an instance
var myInstance = new Foo();
//Using it
alert(myInstance.a); //Reference Error
alert(myInstance.aa); //Alerts 1
myInstance.Bar_Private(0,1); //Reference Error
myInstance.Bar_Public(0,1); //Calls Bar_Public with 0 and 1 as params
JavaScript heeft geen echte klassen, maar het is het gemakkelijkst om dit patroon te beschrijven als "klasse-achtig".
Vanzelfsprekend kunt u zoveel openbare/particuliere methoden, objecten, enz. Toevoegen als u maar wilt.
Merk ook op: VERGEET NIET DE "NIEUWE" OPERATOR BIJ HET MAKEN VAN EEN INSTANTIE MET DIT PATROON ... als u dat doet, dan is "dit" gebonden aan uw globale ruimte en kan het andere toepassingsgegevens (naambotsingen) overschrijven.
Ik hoop dat dit helpt, veel geluk!