Javascript: call (), apply () and bind ()
call (), apply () and bind () — egy új remény
eddig úgy kezeltük a funkciókat, mint egy névből álló objektumokat (opcionális, anonim függvény is lehet), és a kód, amelyet végrehajtja, amikor meghívják. De nem ez a teljes igazság. Mint igazságszerető ember, tudatnom kell Önnel, hogy egy funkció valójában közelebb áll a következő képhez:

mi ez??????? Ne aggódj! Most végigmegyek ezen a 3 hasonló módszeren, amelyek minden funkcióban megjelennek példákkal. Örüljetek!
bind ()
a hivatalos dokumentumok azt mondják: a bind()
módszer új funkciót hoz létre, amely, ha hívják, rendelkezik a this
kulcsszóval a megadott értékre. (Valójában még több dologról beszél, de ezt egy másik alkalommal hagyjuk :))
Ez rendkívül erős. Definiáljuk a this
értékét egy függvény hívásakor. Nézzük cooooode:
bind() method on line 14.
bontsuk le. Amikor abind()
módszert használjuk:
- A js motor új
pokemonName
példány és kötéspokemon
mintthis
változó. Fontos megérteni, hogy másolja a pokemonName funkciót. - létrehozása után egy példányát a
pokemonName
funkció képes hívnilogPokemon()
, bár nem volt a pokemon objektum kezdetben. Most felismeri tulajdonságait (Pika és Chu) és módszereit.
és a jó dolog az, hogy miután Megkötöttünk() egy értéket, ugyanúgy használhatjuk a funkciót, mint bármely más normál függvény. Még a funkciót is frissíthetjük, hogy elfogadjuk a paramétereket, így továbbíthatjuk őket:
call(), apply()
a hivatalos docs hívás() mondjuk: a call()
metódus hív egy függvény egy függvényt egy adott this
érték és argumentumok külön-külön.
Ez azt jelenti, hogy bármilyen függvényt hívhatunk, és kifejezetten megadhatjuk, hogy athis
hivatkozzon a hívásfüggvényen belül. Nagyon hasonlít a bind()
módszerhez! Ez határozottan megmenthet minket a hacky kód írásától (annak ellenére, hogy mindannyian még mindig hackerzzz vagyunk).
a fő különbség a bind()
és call()
között az, hogy a call()
módszer:
- további paramétereket is Elfogad
- azonnal végrehajtja a hívott funkciót.
- a
call()
módszer nem készít másolatot a hívott funkcióról.
call()
és apply()
ugyanazt a célt szolgálják. Az egyetlen különbség a működésük között az, hogy a hívás() elvárja, hogy az összes paramétert egyedileg adják át, míg az apply() elvárja az összes paraméterünk tömbjét. Példa:
ezek a beépített módszerek, amelyek minden JS függvényen léteznek, nagyon hasznosak lehetnek. Még akkor is, ha nem a végén használja őket a napi programozás, akkor is befut gyakran, ha más népek kódot olvas.
Ha bármilyen kérdése van, mint mindig, lépjen kapcsolatba Instagram ❤
Leave a Reply