1. Closuresin JavaScriptA Closure JavaScriptben The clientside MVC system: Wherecould be theclosureuseful? A kliens oldali MVC rendszer: Hogyan lehet a closure hasznos?
2. What is theClosure?Mi a Closure? var functioninClosureSheeper() functionsetSheeper() var inclosuresheeps functiongetSheeper() Howmanysheepsdowehave? Whycan’t he hearme? Hány birkánk van? Hééé? Miért nem hall ? Tryus! Wehavedirect line tohim! Próbáld velünk! Van egy közvetlen vonalunk hozzá! functionoutOfClosure()
3. Toget more real: clientSide MVCÉletszerűbben: Kliens oldali MVC Tehát a closure segíthet nekünk olyan esetben, ha valamit el akarunk rejteni a globális névtér elől, akár a saját, akár programozó társaink segítégére. So, theclosurecanhelpustohidesomethingfromtheglobalscope, tohelpthecoding of ourselves, orthecodingofothers. Röviden a másik oldalon: / To be short (Revealed Module Pattern by Christian Heilmann) inthenextslide:
4. varglobal = (function() { varprivate; varprivatemethod = function() { //blablalba } return { priveteGetter :privatemehtod//<= setthereference } })(); privatemethod(); //<= wontworklikethis global.privateGetter() ; //<= works Tehát ha akarunk egy Rajzprogramot / Ifweneed a Drawing program: Model(an objecttohandlingdrawnobjects, hold theirproperties, algorithms of shapes, etc. /Egy objektum mely a rajzolt dolgokat kezeli, tárolja tulajdonságaikat, stb) Controller(an objecttohandlingevents, getsthemfromtheView, and updatestheModelaccordingly / egy objektum mely kezeli az eseményeket, melyek a View-től érkeznek és ennek megfelelően frissíti a modelt View (The shapesdrawingtool, as SVG or <canvas> oranyjavascriptdrawinglibrary –JSXGraph/ Az alakzatokat rajzoló eszköz, SVG vagy <canvas> vagy bármilyen javascript függvénykönyvtár, plJSXGraph)
5. Miért jó ez nekünk?Why is itgoodforus? Wecanmakeournicemethods, to be allprivate, thatlatercanbechanged, withouttheneedtochangethe most used (public) methods of thecode /Elkészíthetjük a saját privát metódusainkat, később változtathatunk a kódon anélkül, hogy a több helyen használt (public) metódusainkon változtatnánk. The code is nicelyseparated, and easytofindormaintainthings / A kód olvashatóbb, és könnyű karbantartani vagy megtalálni dolgokat. The samenamecan be used more times, soit is easytoremember, and fit inthegivencontex / ugyanazt a nevet használhatjuk többször, így egyszerűbb rá emlékezni, és jobban illeszkedik az adott környezetben. Ifweplantoshareourcode, ormake a biggerlibrary, it is esayto update ormodifywithoutbreakingother’scode / Ha mások is használják a kódunkat, vagy függvénykönyvtár létrehozását tervezzük, könnyebb a frissítés anélkül hogy mások kódját tönkretennénk
6. Sosee an example – inthegraphical program weneed x and y. Becauseweusedtoit, and itfitsinthecontext, anddon’twanttobotherwith x_1, x_m, x_v orothernames / Lássunk egy példát – egy rajprogramban szükségünk van x – re és y –ra. Mivel hozzászoktunk, beleillik a környezetbe, és nem akarunk x_1, x_m, x_v változónevekkel vacakolni. varView = (function() { var x, y; vargetx = function() { return x ; }; varsetx = function(val) { x = val; }; return { getX:getx, //<= setthereference / adjunk referenciát a privát függvényre getY:gety } })(); varController = (//dothesamewithController and Modeltoo – ugyanígy írjuk meg a Controller és Model objektumunkat is //usage: codenicelyseparatedwithwellknownmethods /használat: a kód olvasható, mégis az ismert metódusainkat használjuk View.getX(); Controller.setY(val);