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:
bind() method on line 14.Pojďme si rozebrat to. Když jsme se použít bind() metoda:
- JS engine je vytvoření nového
pokemonNameinstance a vazbypokemonthisproměnné. Je důležité si uvědomit, že kopíruje funkci pokemonjméno. - Po vytvoření kopie
pokemonNamefunkce 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