Rychlý průvodce:Prototypy v JavaScriptu

🌁Ahoj všichni! 🌁

Dnes budeme diskutovat o Prototypech a řetězec prototypů v JavaScriptu. Prototypy jsou rozhodně jedním z nejobtížněji vizualizovatelných konceptů JavaScriptu kvůli jejich zdánlivě abstraktní povaze – ve skutečnosti jsou však velmi konkrétní + důležité pro pochopení základní struktury JavaScriptu. Pojďme se dnes naučit něco nového!

💭💭💭💭💭💭💭💭💭💭💭💭💭

Zde jsou naše cíle :

  1. Co je prototyp?
  2. Jaké datové typy mají prototypy?
  3. Co to znamená, když řekneme, že JavaScript je jazyk založený na prototypech?
  4. Co nám dávají prototypy?
  5. Co je to prototypová vlastnost?
  6. Co je vlastnost proto?
  7. Jak funkce a prototypy spolupracují?

Úvod

Prototypy jsou objekty spojené s každým datovým typem standardně v JavaScriptu.

Proto, zjednodušeně řečeno, JavaScript je považován za jazyk založený na prototypech. Kdykoli je instance objektu vytvořena, poskytuje stroj JavaScriptu vlastnost prototypu na funkci konstruktoru a vlastnost proto k instanci objektu . Ale o tom později.

Prototypy nám umožňují definovat metody nebo vlastnosti všem instancím vytvořeným konkrétním objektem. V souladu s tím má každá instance tohoto objektu přístup k metodě nebo vlastnosti. To je obrovské, protože to šetří čas a vysušuje náš kód, protože metoda nebo vlastnost nemusí být definována ve funkci konstruktoru objektu nebo předefinována pro každou instanci objektu.

Vlastnost prototypu a konstruktéři

Zatím jsme se naučili, že vlastnosti prototypu nám umožňují přístup k vlastnostem a/nebo metodám. Abychom tomu i nadále rozuměli, je také důležité poznamenat, že všechny konstruktéry objektů mají vlastnost prototype . A každý konstruktér objektů má prototyp „Prototypu objektu“.

Podívejme se na příklad:

function Person(name){
    this.name = name
}

Jedná se o jednoduchý objektový konstruktor. Z toho můžeme vytvořit nekonečné množství instancí „Osoba“, z nichž každá má vlastnost „jméno“.

Prototyp našeho konstruktoru objektu, Osoba, je "Prototyp objektu". Můžeme to vidět, pokud přihlásíme náš konstruktor objektů do konzoly:

Proto vlastnost instancí

Proč je to důležité? Je to důležité, protože každá instance objektu má vlastnost proto, která ukazuje na prototyp objektu funkce konstruktoru, který vytvořil uvedenou instanci. A úkolem proto vlastnosti je podívat se na objektový prototyp konstruktoru a zjistit, zda má nějaké metody nebo funkce dostupné k použití.

Zjistili jsme, že JavaScript je prototypový jazyk; JavaScript bude ve skutečnosti pokračovat tímto vzorem pohledu od vlastnosti proto instance k prototypu objektu konstruktoru, dokud nedosáhne hodnoty „null“. Tento vzor se nazývá Prototype Chain .

Řetězec urychluje hledání, zda má instance objektu přístup k určitým metodám; jednoduše používá tento "vzorec":

Instance.__proto__ === Constructor.prototype

Pokud je vlastnost proto instance přísně rovna prototypu konstruktoru, pak víme, že instance byla vytvořena z tohoto konstruktoru objektu.

Podívejme se na příklad v konzoli. Vytvořil jsem instanci osoby s názvem "Charlie".

Pak jsem zkontroloval náš malý vzorec:

Můžete také zkontrolovat tímto způsobem:

console.log(Charlie.__proto__ === Person.prototype)
// the console should return 'true'

Shrnutí + Závěr

Vím, že je to těžké obejít. Nicméně doufám, že se nám společnými silami podařilo rozbalit nějaký prototypový řetěz. Je velmi užitečné porozumět tomu, co se děje pod objekty a instancemi JavaScriptu, abyste dále viděli, jak spolu váš kód souvisí. A také jak to ovlivní další části vašeho kódu.

** Pamatujte, že se stále učím stejně dobře jako vy. Neváhejte zanechat komentáře, dotazy + návrhy níže. Šťastné učení! **

🌁🌁🌁