Príklady objektov jazyka JavaScript

Objekty sú základným kameňom javascriptu. Vstavané dátové typy sú reprezentované ako objekty. Ak chcete byť úspešným vývojárom javascriptu, musíte mať jasnú predstavu o tom, ako fungujú. Stavebné bloky objektu sa nazývajú jeho polia vlastnosti objektu javascript. Používajú sa na popísanie akéhokoľvek aspektu objektu. Vlastnosť môže popísať dĺžku zoznamu, farbu oblohy alebo dátum narodenia osoby. Vytváranie objektov je jednoduchý proces. Jazyk poskytuje syntax, ktorý je známy ako doslovný objekt, ktorý je reprezentovaný naklonenými zátvorkami.

Prístup k vlastnostiam

Jazyk poskytuje dve položky pre prístup k vlastnostiam. Prvý a najčastejšie známy ako označenie bodu. Pomocou bodového zápisu možno získať prístup k prostriedku zadaním názvu hostiteľa objektu, za ktorým nasleduje obdobie a názov vlastníctva. Napríklad, keď objekt object.foo bol pôvodne priradený hodnote jedna, potom bude jeho hodnota 2 po vykonaní operátora objektu javascript.


Alternatívna syntax pre prístup je známy ako zátvorná položka. V zápise pre názov objektu nasleduje sada hranatých zátvoriek. Uviedli názov vlastnosti ako reťazec: Object ["foo"] = objekt ["foo"] + 1. Teraz je výraznejší, než je bodová notácie, pretože umožňuje variabilné zadať všetky alebo časť vlastností. Je to možné, pretože tlmočník objektu javascript automaticky prevádza výraz do reťazca a potom prijme príslušnú vlastnosť. Názvy vlastností sú vytvorené "za behu" zlučovaním obsahu premennej f s reťazcom "oo": var f = "f"; objekt [f + "oo"] = "bar". Označenie zátvoriek umožňujeNázvy mien vlastností obsahujú znaky zakázané bodovou notáciou. Napríklad nasledujúci operátor je v zátvorkách úplne legálny. Avšak, ak sa užívateľ pokúsi vytvoriť rovnaký názov vlastnosti dot notácie, bude čeliť syntaktická chyba:

objekt; = true ["@ # $% & Amp * ()!".]. Prístup k vlastnostiam vnorených objektov javascriptu je možné získať prepojením bodov a /alebo zátvoriek. Napríklad, ďalší objekt obsahuje vnorený objekt s názvom Baz, obsahujúci ďalší objekt s názvom foo, ktorý má vlastnosť pomenovanú bar, ktorá obsahuje päť: objekt var = {Baz: {foo: {bar: 5}}}. Nasledujúce výrazy získajú prístup ku vlastnosti vnorenej pruhy. Prvý výraz používa bodovú notáciu, zatiaľ čo druhý výraz používa štvorcovú notáciu. Tretí výraz spája oba záznamy tak, aby sa dosiahol rovnaký výsledok:
  • object.baz.foo.bar;
  • objekt ["baz"] ["foo"] ["bar"];
  • objekt ["baz"] Foo ["bar"].
  • Výrazy, ako je uvedené v predchádzajúcom príklade, môže mať za následok zníženie výkonu v prípade zneužitia a viesť JavaScript Object nadol. Vyhodnotenie každého výrazu v bode alebo zátvorke si vyžaduje čas. Ak je rovnaký majetok použitý niekoľkokrát, potom to dáva zmysel, aby získali prístup k majetku raz a uložte lokálne premenné pre všetky budúce účely.

    Funkcia ako metóda

    Keď sa funkcia používa ako vlastnosť objektu, nazýva sa jej metódou. Podobne ako vlastnosti sú uvedené v notácii literálov objektov. Napríklad: var object = {sum: function (foo bar) {return foo + bar;}}. Metódy objektu javascript môžu byť vyvolanépomocou značiek a zátvoriek. Nasledujúci príklad volá metódu sum () z predchádzajúceho príkladu pomocou obidvoch položiek:
  • object.sum (1 2);
  • objekt ["súčet"] (1 2).
  • Doslovné označenie objektu je užitočné pri vytváraní nových objektov, ale nemôže pridať existujúce vlastnosti alebo metódy. Našťastie pridávanie nových údajov je rovnako jednoduché ako vytváranie operátora priradenia. Vytvorí sa prázdny objekt. Potom pomocou operátorov priradenia sú pridané dve vlastnosti, foo a bar, ako aj metóda baz:
  • var object = {};
  • objekt.foo = 1;
  • objekt.bar = nula;
  • object.baz = funkcia () {return "hello from baz ()";}.
  • Zapuzdrenie programov

    Základnou myšlienkou objektovo orientovaného programovania je rozdeliť programy na menšie časti a každý z nich je zodpovedný za riadenie vlastného stavu. Preto niektoré vedomosti o tom, ako časť programu funguje, môžu byť lokálne v tejto časti. Niekto, kto pracuje na zvyšku programu, by si o tom nemal pamätať ani o ňom vedieť. Kedykoľvek sa tieto miestne údaje zmení, stačí aktualizovať kód priamo okolo neho. Rôzne časti takýchto programov navzájom spolupracujú prostredníctvom rozhraní, obmedzených funkčných množín alebo väzieb, ktoré poskytujú užitočnú funkčnosť na abstraktnejšej úrovni a skrývajú ich presnú implementáciu. Takéto časti programu sú modelované pomocou objektov. Ich rozhranie pozostáva z určitého súboru metód a vlastností. Vlastnosti, ktoré sú súčasťou rozhrania, sa nazývajú verejné. Ostatní, ktorí nemajúby sa mal vzťahovať na externý kód, ktorý sa nazýva súkromný.
    Mnohé jazyky poskytujú príležitosť rozlíšiť medzi verejnými a súkromnými nehnuteľnosťami a neumožňujú prístup k súkromným osobám. javascript, znova zaujal minimalistický prístup, ešte sa nedosiahol. V súčasnosti prebiehajú práce na pridaní tohto jazyka. Preto programátori javascript úspešne použijú túto myšlienku. Spravidla je prístupné rozhranie popísané v dokumentácii alebo komentároch. Zvyčajne je na začiatku názvov vlastníctiev umiestnený znak podčiarknutia (_), ktorý označuje, že tieto vlastnosti sú súkromné. Oddelenie rozhrania od implementácie je skvelý nápad. Obvykle sa to nazýva enkapsulácia.

    Vlastnosti

    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_1.jpeg [/palec]
    Zariadenie s zátvorkami {} sa nazýva literál objektu. Do týchto zátvoriek {} môžete okamžite vložiť niektoré vlastnosti. Napríklad dvojice "kľúč: hodnota, atď.» Nech user = {//meno objektu: "John", //klávesou "name" store value "John" Vek: 30 //tlačidlom "vek" store hodnotu 30}. Vlastnosť má kľúč (tiež známy ako "meno" alebo "id") pred dvojbodkou ":" a hodnotou napravo od neho. Užívateľský objekt má dve vlastnosti. Výsledný užívateľský javascript objekt s dvoma podpísanými súbormi označenými ako "name" a "age". Môžete kedykoľvek pridávať, mazať a čítať súbory z nej. Hodnoty vlastností sú k dispozícii pomocou bodového zápisu. Môže to byť akéhokoľvek typu. Môžete pridať logickú hodnotu. Ak chcete odstrániť vlastnosť, použite odstrániť v prípade objektu javascript Chyba.

    Všetky objekty chýb javascript sú potomkami objektu Chyba alebozdedený objekt:
  • Chyba syntaxe Objekt je zdedený z chyby objektu.
  • JSON Parse Chyba určitého typu chyby syntaxe objektu.
  • K ponoriť do hlbšieho porozumenia ako aplikácia vysporiadať s chybami javascript, lepšie spoznať Airbrake javascriptom - oznámenia chyby nástroj pre sledovanie v reálnom čase a okamžité pochopenie toho, čo šiel s kódom javascript zle. Chybové správy, ktoré môžu používatelia získať pred odobratím javascript objektu:
  • Bad znak v reťazci lyterale konaní.
  • Zlá charakter v literálnom literále.
  • Zlý výstup Unicode.
  • Zlý znak úteku.
  • Neterminovaný reťazec.
  • Neočakávaný nečíselný kód.
  • Žiadne čísla za desatinnou čiarkou.
  • neurčené čiastkové číslo.
  • Žiadne údaje za ukazovateľom stupňa.
  • Žiadne číslice po znamení exponentu.
  • Exponenciálna časť nemá žiadne čísla.
  • Neočakávaný koniec údajov.
  • Neočakávané kľúčové slovo.
  • Neočakávaný symbol.
  • Koniec údajov pri čítaní obsahu objektu.
  • Očakávaný názov nehnuteľnosti alebo '} ".
  • Výpočtové vlastnosti

    Hranaté zátvorky môžete použiť v doslovnom dokumente. Toto sa nazýva výpočtové vlastnosti. Príklad je uvedený nižšie.
    Hodnota vlastnosti vychislimoy jednoduchá: [ovocie] znamená, že názov vlastnosti by mali byť z ovocia. Ak návštevník zadá "jablko", taška bude {apple: 5}. Môžete použiť zložitejšie výrazy v hranatých zátvorkách: nechajte ovocie = "jablko"; let bag = {[ovocie + 'Počítače']: 5 //bag.appleComputers = 5};Hranaté zátvorky sú oveľa výkonnejšie ako štítky s bodmi. Umožňujú mená a premenné vlastností. Ale sú tiež ťažšie písať. Pretože väčšinu času, keď sú názvy vlastností známe a jednoduché, sa používa bodka. A ak potrebujete niečo zložitejšie, prepnite do hranatých zátvoriek.

    Rezervácia slov

    Premenná nemôže mať meno, ktoré by sa rovnal jednému z rezervovaných slov, ako napríklad pre návrat atď. Ale pri triedení objektov javascriptu neexistuje takéto obmedzenie. ,
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_2.jpeg [/thumb]
    V zásade je povolené akékoľvek meno , ale je tu špeciálna: "__proto__" dostáva zvláštne odvolanie z historických dôvodov. Napríklad môžete nastaviť jeho hodnotu inú ako objekt: let obj = {}; obj. proto__ = 5; varovanie (obj.__ proto__); //[object Object] nefunguje podľa očakávania. Ako je zrejmé z kódu, účel primitivu 5 sa ignoruje. Toto môže byť zdrojom chýb a dokonca zraniteľnosti, ak má operátor v úmysle uložiť v objekte ľubovoľné páry kľúč-hodnota a umožniť návštevníkovi, aby špecifikoval kľúč. V tomto prípade si návštevník môže zvoliť "proto" ako kľúč a pridať do javascriptového objektu. Existuje spôsob, ako robiť objekty, ktoré sa zaobchádzajú s __proto__, ako bežný majetok. K dispozícii je aj ďalšia karta dátovej štruktúry, ktorá podporuje ľubovoľné klávesy.

    Integer Vlastnosti

    Termín "celočíselná vlastnosť" tu znamená reťazec, ktorý sa dá transformovať z celej bez modifikácie. Napríklad "49" je celý názov nehnuteľnosti, pretože keď je konvertovaný na celé číslo a na späť, je to rovnaké. Ale "+49" a "1.2" nie súnapr. Na druhej strane, ak kľúče nie sú celé čísla, konvertujú sa v poradí vytvorenia. Príklad uvedený nižšie.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_3.jpeg [/palec]
    Na vyriešenie problému pomocou telefónnej kódy, môžete " klamať "tým, že sa kódy nezakladajú. Pridávanie znaku "+" (znamienko plus) je dostatočné pred každým kódom. Teraz bude fungovať ako stretnutie. Rozdiel primitívnych objektov je, že sú uložené a skopírovaný "vo forme odkazu." Primitívne hodnoty sú priradené a kopírované "ako celočíselná hodnota". Variabilné udržuje "adresa pamäti" skôr ako samotný objekt alebo "odkazy" na neho. Môžete použiť ľubovoľnú premennú na prístup a úpravu jej obsahu.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_4.jpeg [/palec]
    Vo vyššie uvedenom príklade ukazuje, že existuje len jeden objekt a admin, aby ste ho zadali. Potom, ak neskôr použije iný kľúč (používateľ), používateľ zistí zmeny. Operátori rovnosti == a striktná rovnosť === pre objekty pracujú rovnakým spôsobom. Obe objekty sú rovnaké, len ak sú to isté objekty. Pre porovnania ako obj1 & gt; obj2 alebo pre porovnanie s primitívnym obj == 5 objektov sú konvertované na primitívne. Po pravde povedané, takéto porovnanie musí byť veľmi vzácne a zvyčajne výsledkom kódovanie chyby.

    Kontrola predmet JavaScript,

    Predmety mali prístup ku všetkým vlastnostiam. Ak však vôbec neexistuje, nebude to chyba. Iba prístup k neexistujúcim vlastnostiam sa vráti nedefinovaný. Poskytuje veľmi bežný spôsob, ako otestovať vlastníctvo a porovnať ho s nedefinovanými.Nižšie je uvedený príklad.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_5.jpeg [/palec]
    Za použitia «v» pre vlastnosti, ktoré zostávajú nedefinovaný , Zvyčajne je striktná kontrola porovnávania "=== undefined" v poriadku. Existuje špeciálny prípad, keď zlyhá a "in" funguje správne. Toto je prípad, keď objekt objektu existuje, ale zostáva nedefinovaný.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_6.jpeg [/palec]
    Vo vyššie uvedenom kódu, je technicky vlastnosť obj.test , Preto prevádzkovateľ pracuje správne. Podobné situácie sa vyskytujú veľmi zriedkavo, pretože nedefinované zvyčajne nie sú určené. Zvyčajne sa používajú nulové hodnoty "neznáme" alebo "prázdne". Preto je operátor v skutočnosti hosťom v kóde.

    cyklus «Forino»

    pre navigáciu cez všetky kľúče od objektu k objektu, je zvláštna forma cyklu: Forino. Toto je úplne iná vec pre dizajn (;;). Nižšie je uvedený príklad.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_7.jpeg [/palec]
    Je potrebné poznamenať, že všetci návrhári «pre» dovoľte, aby ste uviedli cyklickú premennú vo vnútri slučky ako kľúč let. Alternatívne môžete namiesto toho použiť iný názov premennej. Napríklad pre (nechajte prop v obj) je tiež široko používaný. Existuje alternatívna "hranatá konzola", ktorá funguje s akýmkoľvek riadkom.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_8.jpeg [/palec]
    Tento bod vyžaduje JavaScript kľúč o Objekt bol platný ID premennej, to znamená, že neexistujú medzery ani iné obmedzenia. Je potrebné venovať pozornosť tomu, že riadok v zátvorkách bol správne citovaný. Hranaté zátvorky tiež poskytujú spôsob, ako ich získaťnázov objektu v dôsledku akéhokoľvek výrazu, na rozdiel od doslovného riadku - s premennou: let key = "likes birds"; //rovnaké ako používateľ ["likes birds"] = true; používateľ [key] = true Tu sa môže variabilný kľúč vypočítať počas vykonávania a závisí od vstupu používateľa a potom sa použije na prístup k vlastnosti. To dáva programátorom väčšiu flexibilitu. Skrytá notácia sa nemôže použiť rovnakým spôsobom, pretože sa bude analyzovať objekt javascript. Nižšie je uvedený príklad.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_9.jpeg [/palec]

    Zariadenie Const

    Deklarovaný objekt konštanty môže byť zmenený. Príklad je uvedený nižšie.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_10.jpeg [/palec]
    Zdá sa, že predmet príkaz JavaScriptu (*) spôsobí chybu, ale nie je. Je to preto, lebo const zachytáva hodnotu samotného používateľa. A potom používateľ stále drží odkaz na ten istý objekt. Riadok (*) sa nachádza vo vnútri objektu, nezahŕňa ho. Konst urobí chybu, ak sa pokúsite nainštalovať používateľa a niečo iné. Klonovanie a zlúčenie, Object.assign vytvorí ďalší odkaz na ten istý objekt, ak ho chcete duplikovať. To je tiež uskutočniteľné, ale o niečo komplikovanejšie, pretože javascript nemá vloženú metódu. V skutočnosti je to zriedkavé. Kopírovať podľa odkazu sa používa vo väčšine prípadov. Ale ak ho naozaj potrebujete, potom musíte vytvoriť JavaScriptu objektu a kopírovať existujúce štruktúry, kopírovanie vlastností na primitívne úrovni. Nižšie je uvedený príklad.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_11.jpeg [/palec]
    A tiež môžete použiť túto metódu Object.assign , Argumenty dest a src1, srcN sú objekty.Skopíruje vlastnosti všetkých objektov src1, srcNINTO dest. Inými slovami, vlastnosti všetkých argumentov, počnúc druhým, sa skopírujú v 1.. Potom sa vráti k destu. Môžete napríklad použiť na zlúčenie viacerých objektov do jedného.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_12.jpeg [/palec]
    , a môže byť tiež použitý pre nahradenie cyklu Object.assign jednoduché klonovanie. Skopíruje všetky vlastnosti používateľa do prázdneho objektu a vracia ho, rovnako ako slučka, ale kratší. Doteraz sa predpokladalo, že všetky užívateľské vlastnosti sú primitívne. Vlastnosti však môžu byť odkazy na iné objekty. Ak to chcete vyriešiť, musíte použiť klonovacie slučky, ktoré kontroluje každú hodnotu používateľa [kľúč], a ak je to objekt, zopakuje jeho štruktúru. Toto sa nazýva "hlboké klonovanie". Existuje štandardný algoritmus hlbokého klonovania, ktorý spracováva vyššie uvedený prípad a zložitejšie prípady, nazývané štruktúrovaný klonový algoritmus. Aby sa nebolo opätovné objavovanie kolesa, môžete použiť funkčnú implementáciu z knižnice javascript lodash, metóda sa nazýva _.cloneDeep (obj).

    Moderné metódy

    V prípade, že programátor fixovať na objekt a hľadá všetky vlastnosti v poradí, v ktorom boli pridané, môže sa opierať o "organizovanie zvláštne", keď sú uvedené vlastnosti celej číslo, zatiaľ čo iní vytvorené v poradí vytvorenia objektu javascript. Pokročilé objektové techniky sa zaoberajú koncepciami, ktoré sa zriedka používajú pri javaskriptovaní. To je spôsobené tým, že tieto normálne situácie nie sú potrebné. Niektoré z týchto metód nemusiaPráca v starších prehliadačoch, ako je Netscape starších verziách 4. Pomocou prototyp by mohli byť použité na vytvorenie objektov a JavaScriptu myCircle všetky spôsoby, nie len nové. To prináša zmiešané zaťaženie výkonu. Musí zachovať samostatnú kópiu metódy pre každú inštanciu objektu, takže práca môže vyžadovať menej pamäte, ale ich hľadanie aktuálny prehliadač musí usilovať o rodičovskej a región. To môže viesť k maximálnemu oneskoreniu. Používateľ spravidla musí používať to, čo je vhodné pre kód, a nie vychádzať z výkonu, pokiaľ nemá veľmi špecifické kontrolované prostredie.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_13.jpeg [/palec]

    vracia true

    Niektoré v niektorých prípadoch môže byť nevyhnutné, aby sa vlastnosť objektu viazala na samotný objekt alebo niekde v reťazci prototypu. V JavaScript použiť všetky objekty metóda hasOwnProperty, ktorá vráti pravda, keď je vlastnosť viazaná na konkrétne inštancie objektu. V tomto prípade je možné skontrolovať, či konštruktér objektu má rovnaký vlastnosť s rovnakou hodnotou ako inštancia samotného objektu. To môže poskytnúť nesprávne výsledky, ak tam sú niektoré JavaScript Object vlastnosti na rovnakú hodnotu ako inštancia objektu a reťazca prototypu. Metóda hasOwnProperty má jeden parameter - názov vlastníka vo forme reťazca.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_14.jpeg [/palec]
    Podobne možno vytvoriť vlastné metódy. Toto je len funkcia, ktorá je vytvorenávnútri funkcie konštruktora. Môžem sa niekomu mýliť, ale to funguje. Súkromnú funkciu môže vyvolávať iba samotný konštruktér alebo metódy definované v riadku. Môžu byť použité ako verejné metódy v prípade, že návrhár určená verejnosti a dostupné pomocou verejnej metódy objektov JavaScript. funkcia myob () {funkcia cantBeSeen () {alert (secretValue); } Var secretValue = "; this.method1 = funkcia () {secretValue = 'žiadne prekvapenie; cantBeSeen ();}; this.method2 = cantBeSeen;} var oneOb = nový MYOB (); oneOb.method1 (); //výstrahy oneOb.method2, žiadne prekvapenia '(); //. výstrahy, žiadne prekvapenie'

    šablóny Príkaz

    objekty príkazov umožňujú voľne systém, delenie tie vydanie požiadavke z objektov skutočne liečených žiadosť. Tieto požiadavky sa nazývajú udalosti a kód spracováva žiadosti, nazvaný rutinu udalosti. Predpokladajme, vytvorené programy podporujúce akcie schránky vyňať, kopírovať a vložiť. Tieto akcie je možné spustiť rôznymi spôsobmi v celej aplikácii, menu systém, kontextové menu napríklad kliknutie annyam pravým tlačidlom myši na textové pole alebo kombinácie kláves. Objekty príkazov vám umožní centralizovať spracovanie týchto krokov, jeden pre každú operáciu, ktoré vyžadujú iba jeden tím zvládnuť všetky otázky Cut, jeden pre všetky žiadosti o kópiu a všetky otázky pasta Keďže tímy centralizujú všetky spracovanie, často sa podieľajú na spracovaní zrušenia funkcií pre celý program. Významné zlepšenie môže byť dosiahnuté použitím moderné metódy JavaScript, čo vedie k účinnejšej, spoľahlivejšie a podporovaných aplikácií. Ak chcete zistiť, ako to jemôžete použiť javascript + jQuery šablóny. Tento unikátny balík obsahuje optimalizované javascript pre všetky šablóny GoF pomocou pokročilejších funkcií, ako sú menné priestory, prototypy, moduly, funkčné objekty, zatváranie, anonymné funkcie a ďalšie. Ak používatelia potrebujú najnovšie moduly gadgetov a šablón pre javascript, jQuery šablóny a šablónové architektúry, potom je to najlepšia voľba. Tento balík obsahuje cenné a aktuálne informácie pre vývojárov javascript. Tu je obsah:
  • GoF šablóny optimalizované pre javascript.
  • Šablóny moderného dizajnu pre javascript.
  • Modelové zobrazenie šablón návrhu.
  • šablóny dizajnu jQuery.
  • Architektonické šablóny javascript-idioms.
  • Príklady aplikácií (MVC, SPA, atď.)
  • Navrhované základy syntaxe objektu javascript sú pre začínajúcich programátorov veľmi dôležité. Najprv musíte pochopiť objekty, potom budú existovať vedomosti o objektovo-orientovanom programovaní. Je mimoriadne dôležité mať hlboké pochopenie tohto materiálu, pretože slúži ako základ pre zvyšok javascriptového jazyka.

    Súvisiace publikácie