{"id":61,"date":"2014-03-17T19:28:09","date_gmt":"2014-03-17T18:28:09","guid":{"rendered":""},"modified":"2018-09-17T21:54:25","modified_gmt":"2018-09-17T19:54:25","slug":"lepsie-rozumiet-javascriptu","status":"publish","type":"post","link":"https:\/\/spireng.sk\/en\/lepsie-rozumiet-javascriptu\/","title":{"rendered":"Lep\u0161ie rozumie\u0165 JavaScriptu"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"imgp_img\" style=\"float: left; margin: 2px 5px;\" src=\"\/sites\/default\/files\/imagepicker\/1\/fdsa456d.jpg\" alt=\"Obr\u00e1zok\" width=\"186\" height=\"200\" \/>Toto je recenzia knihy, ktor\u00e1 m\u00e1 podtitul <em>From Library User to JavaScript Developer<\/em>. A ten je celkom presn\u00fd. Ak ste niekedy boli v kontakte s v\u00fdvojom pre web, je mo\u017en\u00e9, \u017ee ste sa s JavaScriptom stretli. To je ten divn\u00fd prototypov\u00fd, slabotypov\u00fd jazyk, ktor\u00fd be\u017e\u00ed v prehliada\u010di (a nem\u00e1 ni\u010d spolo\u010dn\u00e9 s Javou, aj ke\u010f n\u00e1zov napoved\u00e1 nie\u010do in\u00e9). Je mo\u017en\u00e9, \u017ee ste v JS urobili, \u010do bolo nevyhnutn\u00e9 a \u010falej sa n\u00edm u\u017e nezaoberali. Ale ak ste n\u00e1hodou z tej skupiny \u013eud\u00ed, ktor\u00e1 si povedala, \u017ee nie je a\u017e tak\u00fd stra\u0161n\u00fd a chcete sa sta\u0165 JS v\u00fdvoj\u00e1rom namiesto len pou\u017e\u00edvate\u013eom kni\u017en\u00edc, m\u00f4\u017eem v\u00e1m odpor\u00fa\u010da\u0165 knihu <em>JavaScript Enlightenment<\/em> od <em>Cody<\/em><em>ho<\/em><em> Lindley<\/em><em>a<\/em>.<!--more--><!--break--><\/p>\n<p>Autor nap\u00edsal t\u00fato knihu (a t\u00fdm z\u00e1merom sa v\u00f4bec netaj\u00ed), aby s\u00e1m lep\u0161ie porozumel JavaScript. Aj ke\u010f trochu sebeck\u00fd, ale st\u00e1le chv\u00e1lihodn\u00fd z\u00e1mer, z ktor\u00e9ho m\u00f4\u017eu vo svoj prospech \u010derpa\u0165 aj ostatn\u00ed. Na tejto knihe je nie\u010do zauj\u00edmav\u00e9. M\u00e1 jednu oblas\u0165, ktorej sa venuje a venuje sa jej naozaj dobre. Tou oblas\u0165ou j\u00e1 pr\u00e1ca s objektami v JS. Kniha m\u00e1 166 str\u00e1n a 16 kapitol a prakticky cel\u00fd obsah je venovan\u00fd JS objektom. Tr\u00fafam si poveda\u0165, \u017ee ak ju pre\u010d\u00edtate, tak v tom naozaj za\u010dnete ma\u0165 jasno.<\/p>\n<p>JS je prototypov\u00fd jazyk. A tie\u017e slabotypov\u00fd. To druh\u00e9 znamen\u00e1, \u017ee m\u00e1 vlastne len jeden typ \u2013 object. Aby som bol presn\u00fd, tak m\u00e1 aj tzv. primit\u00edvne typy. Tie s\u00fa viac hodnotou ako objektom v pam\u00e4ti a pod\u013ea toho sa aj spr\u00e1vaj\u00fa (ako parametre s\u00fa pred\u00e1van\u00e9 hodnotou a nie odkazom). Zauj\u00edmavej\u0161ie teda je, \u017ee v\u0161etky objekty s\u00fa jedn\u00e9ho typu. Ale aj napriek tomu sa dok\u00e1\u017eu spr\u00e1va\u0165 r\u00f4zne alebo obsahova\u0165 r\u00f4zne \u00fadaje. V JS je to zabezpe\u010den\u00e9 t\u00fdm, \u017ee JS objekt je vlastne kontajner, do ktor\u00e9ho viete ulo\u017ei\u0165 \u013eubovo\u013en\u00fa hodnotu alebo funkciu. A teda ak chcete nieko\u013eko objektov, ktor\u00e9 vyzeraj\u00fa rovnako a rovnako sa spr\u00e1vaj\u00fa, potrebujete met\u00f3du, ktor\u00e1 v\u00e1m tak\u00fd objekt vytvor\u00ed. Potrebujete kon\u0161truktor.<\/p>\n<p>Pr\u00e1ve tento kon\u0161truktor \u2013 teda funkcia \u2013 ktorou bol objekt vytvoren\u00fd, ho dok\u00e1\u017ee odl\u00ed\u0161i\u0165 od objektov, ktor\u00e9 boli vytvoren\u00e9 in\u00fdm kon\u0161truktorom. Aby to bolo zauj\u00edmavej\u0161ie, funkcie s\u00fa v JS tie\u017e objekty (\u010do s nimi umo\u017e\u0148uje \u013eubovo\u013ene manipulova\u0165, ale to in\u00fd pr\u00edbeh). A ako ka\u017ed\u00fd objekt aj funkcia m\u00f4\u017ee ma\u0165 vlastnosti, pri\u010dom existuje jedna, ktor\u00fa m\u00e1 ka\u017ed\u00fd funkcia-objekt, a to vlastnos\u0165 <em>prototyp<\/em><em>e<\/em><span style=\"font-style: normal;\">. <\/span><span style=\"font-style: normal;\">Funkcia, ktor<\/span><span style=\"font-style: normal;\">\u00e1<\/span><span style=\"font-style: normal;\"> vytvor\u00ed in\u00fd objekt (teda kon\u0161truktor) potom automaticky zdie\u013ea t\u00fato svoju vlastnos\u0165 so v\u0161etk\u00fdmi objektami, ktor\u00e9 vytvor\u00ed (tie maj\u00fa tie\u017e vlastnos\u0165 <\/span><em>prototype<\/em><span style=\"font-style: normal;\">). Takto v\u0161etky objekt<\/span><span style=\"font-style: normal;\">y<\/span><span style=\"font-style: normal;\"> vytvoren\u00e9 jednou met\u00f3dou zdie\u013eaj\u00fa jednu vlastnos\u0165 a je mo\u017en\u00e9 ich pomocou nej meni\u0165. A na z\u00e1ver treba poveda\u0165, \u017ee kon\u0161truktor dok\u00e1\u017ee vola\u0165 in\u00fd <\/span><span style=\"font-style: normal;\">kon\u0161truktor<\/span><span style=\"font-style: normal;\">, pri\u010dom vzn<\/span><span style=\"font-style: normal;\">i<\/span><span style=\"font-style: normal;\">k<\/span><span style=\"font-style: normal;\">\u00e1<\/span><span style=\"font-style: normal;\"> re\u0165az volan\u00ed kon\u0161truktorov a rovnako aj re\u0165az <\/span><em>prototype<\/em><span style=\"font-style: normal;\"> vlastnost\u00ed. Takto vznik\u00e1 tzv. <\/span><em>prototype chain,<\/em><span style=\"font-style: normal;\"> ktor\u00e1 je nie\u010do ako re\u0165az dedenia v klasickom objektovo-orientovanom jazyku.<\/span><\/p>\n<p><span style=\"font-style: normal;\">Takto na r\u00fdchlo je to ako nov\u00e1 t\u00e9ma nepochybne \u0165a\u017ek\u00e9 s\u00fasto. Preto je t\u00e1to kniha tak\u00e1 dobr\u00e1. Lebo si zobrala celkom komplikovan\u00fa t\u00e9mu a k\u00fasok po k\u00fasku <\/span><span style=\"font-style: normal;\">ju kr\u00e1ja ako kol\u00e1\u010d na tanieri a ka\u017ed\u00e9 s\u00fasto si vychutn\u00e1va pomal\u00fdm pre\u017e\u00favan\u00edm. \u017diadne prudk\u00e9 skoky, \u017eiadne implicitn<\/span><span style=\"font-style: normal;\">\u00e9<\/span><span style=\"font-style: normal;\"> predpoklady, \u017ee nie\u010do viete. Ide tempom, aby ste boli schopn\u00ed vn\u00edma\u0165 (ale tie\u017e nezaspali).<\/span><span style=\"font-style: normal;\"> Okrem <\/span><span style=\"font-style: normal;\">hore spom\u00ednan\u00fdch mechanizmov<\/span><span style=\"font-style: normal;\"> sa \u010ditate\u013e m\u00f4\u017ee dozvedie\u0165, \u017ee JS m\u00e1 9 nat\u00edvnych kon\u0161truktorov: Number(), String(), Boolean(), Object(), Array(), Function(), Date(), RegExp() a Error(), pri\u010dom kniha podrobne rozober\u00e1 ka\u017ed\u00fd z nich vr\u00e1tan<\/span><span style=\"font-style: normal;\">e<\/span><span style=\"font-style: normal;\"> vlastnost\u00ed a funkci<\/span><span style=\"font-style: normal;\">\u00ed<\/span><span style=\"font-style: normal;\">, ktor\u00e9 objektu pri jeho vytv\u00e1ran\u00ed pridaj\u00fa. Autor sa tie\u017e zaober\u00e1 t\u00fdm, ako <\/span><span style=\"font-style: normal;\">sa<\/span><span style=\"font-style: normal;\"> spr\u00e1va \u0161peci\u00e1lne k\u013e\u00fa\u010dov\u00e9 slovo <\/span><em>this,<\/em><span style=\"font-style: normal;\"> ak\u00fd je rozdiel, ak vol\u00e1te kon\u0161truk\u010dn\u00fa met\u00f3d<\/span><span style=\"font-style: normal;\">u<\/span><span style=\"font-style: normal;\"> s k\u013e\u00fa\u010dov\u00fdm slovom <\/span><em>new <\/em><span style=\"font-style: normal;\">a bez neho alebo \u010do je to <\/span><em>head<\/em><span style=\"font-style: normal;\"> a \u010do <\/span><em>closure.<\/em><\/p>\n<p><span style=\"font-style: normal;\">Ako m\u00f4\u017eete vidie\u0165, v\u0161etky t\u00e9my sa to\u010dia okolo pr\u00e1ce s objekami v JS. Mysl\u00edm, \u017ee na to, aby ste sa mohli ozna\u010di\u0165 za program\u00e1tora JS s\u00fa tieto vedomosti nevyhnutn\u00e9 (inak sa m\u00f4\u017eete divi\u0165, pre\u010do sa napr\u00edklad va\u0161e objekty za\u010dali spr\u00e1va\u0165 inak po tom, \u010do ste na\u010d\u00edtali do prehliada\u010da nejak\u00fa kni\u017enicu tretej strany). <\/span><span style=\"font-style: normal;\">JavaScript Enlightenment <\/span><span style=\"font-style: normal;\">je ve\u013emi dobr\u00e1 kniha ak m\u00e1te v tejto oblasti medzer<\/span><span style=\"font-style: normal;\">y<\/span><span style=\"font-style: normal;\">. T\u00e9mu vysvet\u013euje pomaly, postupne a rozumne. Venuje sa len jedn\u00e9mu a rob\u00ed to dobre. Aby a\u017e najbli\u017e\u0161ie budete robi\u0165 s JavaScriptom, ste tomu, \u010do sa deje na pozad\u00ed, naozaj rozumeli.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Toto je recenzia knihy, ktor\u00e1 m\u00e1 podtitul From Library User to JavaScript Developer. A ten je celkom presn\u00fd. Ak ste niekedy boli v kontakte s v\u00fdvojom pre web, je mo\u017en\u00e9, \u017ee ste sa s JavaScriptom stretli. To je ten divn\u00fd prototypov\u00fd, slabotypov\u00fd jazyk, ktor\u00fd be\u017e\u00ed v prehliada\u010di (a nem\u00e1 ni\u010d spolo\u010dn\u00e9 s Javou, aj ke\u010f [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-61","post","type-post","status-publish","format-standard","hentry","category-vyvoj-softveru"],"_links":{"self":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":1,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":175,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/posts\/61\/revisions\/175"}],"wp:attachment":[{"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spireng.sk\/en\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}