2. Mi a Closure? A Javascript függvények látják, és használhatják a függvénnyel egy scope-ban definiált változókat, és ezen tulajdonság kiaknázását nevezhetjük Closure-nek. Alkalmazási területei: - dinamikusan létrehozható függvények - privát változók - eseménykezelők
3. Mire is jó? I. Dinamikusan létrehozható függvények – kihasználva azt, hogy javascript függvények függvénynel is vissztérhetnek: Pl: function times(n) { return function(x) { return n * x; } } var twoTimes = times(2); Ekkor a twoTimes(21) == 42
4. Mire is jó? II. Privát változók definiálása - ez csak Closure segítségével valósítható meg. Pl: function testFunction(input) { var var1 = input; var var2 = 'valami'; return { firstfunc: function() {alert('egyik function '+var1)}, secondfunc: function(){alert('másik '+var2)} } } test = testFunction('szevasz'); test.secondfunc(); Ez esetben a var1 és var2 változók privátok lettek.
5. Mire is jó? III. Eseménykezelők – pl ajax Pl (jquerys ajax megoldás): ResDiv = $( "#results"); $.ajax({ url: "test.html", cache: false, success: function(html){ ResDiv.append(html); } }); A céldiv külső változóban van definiálva.
6. Zárszó További closure alkalmazások: A google létrehozott egy closure nevű keretrendszert, melyhez csodás closure compilert is fejlesztett, mely a kód tömörítésére szolgál, ráadásul némileg optimalizálja is azt, ám az eddigiekhez vajmi kevés köze van, konkrétan nulla. Üdvözlettel: Gyürüs Máté