Javascript: call(), platí() a bind()
volání(), platí() a bind() — nová naděje
až do teď jsme jednali, funkce jako objekty, které se skládají ze jména (nepovinné, může být také anonymní funkce) a kód se spustí, když je vyvolána. Ale to není celá pravda. Jako člověk milující pravdu, musím vám dát vědět, že funkce ve skutečnosti vypadá blíže k následujícímu obrázku:
Co je tohle??????? Neboj se! Nyní procházím těmito 3 podobnými metodami, které se objevují na každé funkci s příklady. Radujte se!
bind()
oficiální dokumenty říci: bind()
metoda vytvoří novou funkci, která, když volal, má své this
klíčové slovo nastavit na uvedenou hodnotu. (Ve skutečnosti mluví o ještě více věcech, ale necháme to na jindy :))
to je extrémně silné. Při volání funkce explicitně definujeme hodnotu this
. Pojďme se podívat na cooooode:
Pojďme si rozebrat to. Když jsme se použít bind()
metoda:
- JS engine je vytvoření nového
pokemonName
instance a vazbypokemon
this
proměnné. Je důležité si uvědomit, že kopíruje funkci pokemonjméno. - Po vytvoření kopie
pokemonName
funkce je schopna volatlogPokemon()
, ačkoli to nebylo na objektu pokemon zpočátku. Nyní rozpozná jeho vlastnosti (Pika a Chu) a jeho metody.
A skvělá věc je, že poté, co jsme bind() hodnotu, můžeme použít funkci, jako každé jiné normální funkci. Mohli bychom dokonce aktualizovat funkci tak, aby přijímala parametry, a předat je tak:
volání(), platí()
oficiální dokumenty pro volání() říká: call()
metoda volání funkce s daným this
hodnoty a argumenty za předpokladu, individuálně.
to znamená, že můžeme volat libovolnou funkci a explicitně specifikovat, co this
má odkazovat v rámci volající funkce. Opravdu podobné metodě bind()
! To nás určitě může zachránit před psaním hacky kódu(i když jsme všichni stále hackerzzz).
hlavní rozdíly mezi bind()
call()
call()
metoda:
- Přijímá další parametry, stejně
- Plní funkci byl vyzván, hned.
- metoda
call()
nevytváří kopii funkce, na kterou se volá.
call()
a apply()
slouží přesně stejnému účelu. Jediný rozdíl mezi tím, jak fungují, je, že call () očekává, že všechny parametry budou předány jednotlivě, zatímco apply () očekává řadu všech našich parametrů. Příklad:
tyto vestavěné metody, které existují na každé funkci JS, mohou být velmi užitečné. I když je nakonec nepoužíváte ve svém každodenním programování, při čtení kódu jiných národů se do něj často dostanete.
Máte-li jakékoli dotazy, jako vždy, oslovte přes Instagram ❤
Leave a Reply