Objekty jsou základním kamenem javascriptu. Vestavěné datové typy jsou reprezentovány jako objekty. Chcete-li být úspěšným vývojářem JavaScriptu, musíte mít jasnou představu o tom, jak fungují. Stavební bloky objektu se nazývají jeho vlastnosti pole objektu javascript. Používají se k popisu jakéhokoli aspektu objektu. Vlastnost může popisovat délku seznamu, barvu oblohy nebo datum narození osoby. Vytváření objektů je snadný proces. Jazyk poskytuje syntaxi, známou jako literální objekt, která je reprezentována zkroucenými závorkami.
Přístup k vlastnostem
Alternativní syntaxe pro přístup je známa jako závorka. V zápisu pro název objektu následuje řada hranatých závorek. Uvedly název vlastnosti jako řetězec: Object [„foo“] = objekt [„foo“] + 1. Teď je výraznější, než je bodová notace, protože umožňuje variabilní zadat všechny nebo část vlastností. To je možné proto, že interpret javascriptu objekty automaticky převede výraz na řetězec a pak obdrží příslušný majetek. Názvy vlastností jsou vytvořeny "za běhu" spojením obsahu proměnné f s řetězcem "oo": var f = "f"; objekt [f + "oo"] = "lišta". Označovací konzoly umožňujíNázvy vlastností obsahují znaky, které jsou zakázány bodovým zápisem. Například další operátor je v závorkách zcela legální. Pokud se však uživatel pokusí vytvořit stejný název vlastnosti notace bodů, narazí na chybu syntaxe:
object ["! @ # $% & Amp; * ()." = = True. Přístup k vlastnostem vnořených objektů javascript lze získat spojením bodů a /nebo závorek. Například následující objekt obsahuje vložený objekt s názvem baz obsahující jiný objekt s názvem foo, který má vlastnost s pruhem s názvy pěti: var object = {baz: {foo: {bar: 5}}}. Následující výrazy získají přístup k vlastnostem vnořené čáry. První výraz používá bodovou notaci, zatímco druhý výraz používá čtvercový zápis. Třetí výraz kombinuje oba záznamy za účelem dosažení stejného výsledku:
Funkce jako metoda
Mnoho jazyků poskytuje příležitost rozlišovat mezi veřejnými a soukromými nemovitostmi a neumožňuje přístup k soukromým externím kódům. javascript, opět přijal minimalistický přístup, dosud nebyl dosažen. Právě probíhají práce na přidání tohoto jazyka. Proto programátoři javascript úspěšně použijí tuto myšlenku. Přístupové rozhraní zpravidla je popsáno v dokumentaci nebo komentářích. Je také obvyklé umístit symbol podtržítka (_) na začátku názvů vlastností, což znamená, že tyto vlastnosti jsou soukromé. Oddělení rozhraní od implementace je skvělý nápad. Obvykle se nazývá zapouzdření.
Vlastnosti
[thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_1.jpeg [/thumb]
Objekt s závorkami {} se nazývá literál objektu. Do těchto závorek můžete okamžitě vložit některé vlastnosti {}. Například páry "key: value and so on": nechte user = {//název objektu: "John", //podle klíčového "name" uložit hodnotu "John" věk: 30 /30}. Vlastnost má klíč (také známý jako "jméno" nebo "id") před dvojtečkou ":" a hodnotou napravo od ní. Uživatelský objekt má dvě vlastnosti. Výsledný uživatelský javascript objekt se dvěma podepsanými soubory označenými "name" a "age". Soubory můžete kdykoli přidat, odstranit a číst. Hodnoty vlastností jsou k dispozici za použití bodové notace. Může být jakéhokoli typu. Můžete přidat logickou hodnotu. Chcete-li odstranit vlastnost, použijte smazání v případě chyby objektu javascript. Všechny objekty javascriptových chyb jsou potomky objektu Chyba nebodědičné objekt:
Výpočetní vlastnosti
Hodnota vlastnosti vychislimoy jednoduchá: [ovoce] znamená, že název vlastnosti by měly být z ovoce. Takže, když návštěvník zadá „jablko“, taška se stává {jablko: 5}. Můžete použít složitější výrazy v závorkách: nechat producenty ovoce = ‚jablko‘; nechat tašku = {[ovoce + 'Počítače']: 5 //bag.appleComputers = 5};Hranaté závorky jsou mnohem výkonnější než štítky. Umožňují jména a proměnné vlastností. Ale jsou také těžší psát. Protože většinu času, když jsou názvy vlastností známé a jednoduché, je použita tečka. A pokud potřebujete něco složitějšího, přepněte do hranatých závorek.
Rezervace slov
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_2.jpeg [/palec]
V zásadě libovolný název povolena , ale existuje zvláštní: "__proto__" obdrží zvláštní výzvu z historických důvodů. Například můžete nastavit jeho hodnotu odlišnou od objektu: let obj = {}; obj. proto__ = 5; upozornění (obj____ proto__); //[object Object], nefunguje tak, jak je určeno Jak je jasné z kódu, účel primitivního 5 je ignorován. To může být zdrojem chyb a dokonce i zranitelností, pokud má operátor v úmyslu uložit v objektu libovolné páry klíč-hodnota a povolit návštěvníkovi zadat klíč. V takovém případě si může návštěvník zvolit "proto" jako klíč a přidat do objektu javascript. Existuje způsob, jak spravovat objekty, které jsou považovány za __proto__, za pravidelnou vlastnost. K dispozici je také další karta datové struktury, která podporuje libovolná tlačítka.Integer Vlastnosti
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_3.jpeg [/palec]
K vyřešení problému pomocí telefonní kódy, můžete " klamat "tím, že tyto kódy jsou neoprávněné. Přidání znaku "+" (znak plus) je dostatečné před každým kódem. Nyní bude fungovat jako schůzka. Rozdíl primitivních objektů je, že jsou uloženy a zkopírován „ve formě odkazu.“ Primotivní hodnoty jsou přiřazeny a zkopírovány "jako celočíselná hodnota". Variabilní udržuje „adresa paměti“ spíše než samotný objekt nebo „odkazy“ na něj. K přístupu a úpravě jeho obsahu můžete použít jakoukoli proměnnou.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_4.jpeg [/palec]
Ve výše uvedeném příkladu ukazuje, že existuje jen jeden objekt a admin pro jeho zadání. Pokud se později použije další klíč (uživatel), uživatel zjistí změny. Operátoři rovnosti == a přísná rovnost === pro objekty pracují stejným způsobem. Dva objekty jsou stejné, pouze pokud jsou stejným objektem. Pro srovnání jako obj1> obj2 nebo pro porovnání s primitivním obj == 5 objekty jsou převedeny na primitivy. Upřímně řečeno, takové srovnání jsou velmi vzácné a jsou obvykle výsledkem kódovacích chyb.Kontrola předmět JavaScript,
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_5.jpeg [/palec]
Za použití «v» pro vlastnosti, které zůstávají nedefinovaný . Obvykle přísná kontrola "=== undefined" funguje dobře. Existuje zvláštní případ, kdy selže a "in" funguje správně. Toto je, když existuje vlastnost objektu, ale zůstává nedefinovaná.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_6.jpeg [/palec]
Ve výše uvedeném kódu, je technicky vlastnost obj.test . Proto operátor pracuje správně. Podobné situace se vyskytují velmi zřídka, neboť nedefinovaná není obvykle určena. Obvykle se používají hodnoty "unknown" nebo "empty". Takže operátor ve skutečnosti je hostem v kódu.cyklus «forin»
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_7.jpeg [/palec]
Je třeba poznamenat, že všichni návrháři «pro» umožňují deklarovat proměnnou uvnitř smyčky jako smyčky klíč nechal. Jinak můžete místo toho použít jiný klíč proměnné. Například pro (let prop v obj) je také široce používán. Existuje alternativní "hranatá závorka", která funguje s libovolným řádkem.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_8.jpeg [/palec]
Tento bod vyžaduje JavaScript klíč o objekt byl platný identifikátor proměnné, tj bez mezer či jiná omezení. Je třeba dbát na to, aby řádka uvnitř hranatých závorek byla správně uvedena. Výplně také poskytuje způsob, jak získatnázev vlastnosti v důsledku jakéhokoli výrazu, na rozdíl od doslovného řádku - s proměnnou: let key = "likes birds"; //stejné jako u uživatele ["likes birds"] = true; uživatel [klíč] = true Zde lze variabilní klíč vypočítat během provádění a závisí na uživatelském vstupu a pak bude použit pro přístup k vlastnosti. To dává programátorům větší flexibilitu. Označení skvrn nemůže být použito stejným způsobem, jelikož bude probíhat analýza objektu javascript. Níže uvádíme příklad.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_9.jpeg [/palec]
Zařízení Const
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_10.jpeg [/palec]
Zdá se, že předmět příkaz JavaScriptu (*) způsobí chybu, ale není. Je to proto, že const zachycuje hodnotu samotného uživatele. A pak uživatel udržuje odkaz na stejný objekt po celou dobu. Řádek (*) vstupuje do objektu, neobsahuje uživatele. Const udělá chybu, pokud se pokusíte nainstalovat uživatele a něco jiného. Klonovat a sloučit, objekt Object.assign vytvoří další odkaz na stejný objekt, pokud jej chcete duplikovat. To je také možné, ale trochu komplikovanější, protože javascript nemá vloženou metodu. Ve skutečnosti je to vzácné. Kopírovat podle odkazu se používá ve většině případů. Pokud však skutečně potřebujete, musíte vytvořit objekt javascript a zkopírovat strukturu existujícího objektu kopírováním jeho vlastností na primitivní úroveň. Níže uvádíme příklad.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_11.jpeg [/palec]
A také můžete použít tuto metodu Object.assign . Argumenty dest a src1, srcN jsou objekty.Zkopíruje vlastnosti všech objektů src1, srcNINTO dest. Jinými slovy, vlastnosti všech argumentů, počínaje druhým, jsou zkopírovány do prvního. Pak se vrátí k destu. Můžete jej například použít k sloučení několika objektů do jednoho.[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_12.jpeg [/palec]
, a může být také použit pro nahrazení cyklu Object.assign jednoduché klonování. Zkopíruje všechny vlastnosti prázdného objektu uživatele a vrátí jej, stejně jako cyklus, ale kratší. Dosud se předpokládá, že všechny uživatelské vlastnosti jsou primitivní. Vlastnosti však mohou být odkazy na jiné objekty. Pro odstranění tohoto problému, musíme použít klonování cyklus, který kontroluje každou hodnotu uživatele [klíč], a v případě, že objekt pak opakuje jeho strukturu. Toto se nazývá "hluboké klonování". K dispozici je standardní algoritmus pro hluboké klonování, který zpracovává výše případ složitějších případech algoritmus zvaný Structured klonování. Aby nedošlo znovu vynalézat kolo, můžete použít pracuje realizaci knihovny lodash JavaScript, metodu nazvanou _.cloneDeep (obj).Moderní metody
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_13.jpeg [/palec]
vrací true
[palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_14.jpeg [/palec]
Podobně lze vytvořit vlastní metody. Jedná se pouze o funkci, která je vytvořenauvnitř konstruktorové funkce. Může se mi někomu líbit, ale to funguje. Soukromou funkci lze vyvolat pouze konstruktér nebo metody definované v řádku. Mohou být použity jako veřejné metody, pokud jsou přiřazeny veřejnému konstruktoru a přístupné pomocí otevřených metod javascriptových objektů. funkce myob () {function cantBeSeen () {varování (secretValue); } Var secretValue = „; this.method1 = funkce () {secretValue = 'žádné překvapení; cantBeSeen ();}; this.method2 = cantBeSeen;} var oneOb = nový MYOB (); oneOb.method1 (); //Výstrahy oneOb.method2 ‚žádná překvapení‘ (); //. Výstrahy ‚žádné překvapení‘