[JavaScript] Přístup k prototypu primitiv

Při hraní v terminálu prohlížeče jsem narazil na funkci JavaScript, která mě trochu zmátla. V tomto příspěvku vysvětlím, proč tato funkce existuje a jak se to děje. Pojďme se na to podívat:

Co je primitivní datový typ?

V informatice jsou primitivní datové typy souborem základních datových typů, na kterých jsou postaveny všechny ostatní datové typy. Každý programovací jazyk má svou vlastní sadu primitiv. V JS máme následující:

Co jsou prototypy?

Stručně řečeno, prototypy jsou mechanismy, pomocí kterých objekty JavaScriptu navzájem dědí zdroje.

A jak to všechno souvisí?

No, v JS nemají primitivové prototypy. Navzdory tomu, pokud se pokusíme získat přístup k prototypu primitiva pomocí __proto__ , dostali bychom následující:

K tomu dochází, protože JS obaluje objektem vše, co nemá prototyp. Jako příklad zvažte následující kód:

Pod kapotou se děje toto (přibližně):

  • JS vytvoří obalový objekt z našeho primitivního (něco podobného použití new Number(123) );
  • Zavolejte na číslo valueOf() metoda s hodnotou vrácenou z předchozí operace;
  • Zahodit objekt Number;
  • Vraťte primitiva z 2. operace.

Tak tady to máme! Chcete-li získat další informace o Object.prototype.__proto__ , podívejte se na specifikaci ECMAScript 2015