Articles

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:

abind() method on line 14.

bontsuk le. Amikor abind() módszert használjuk:

  1. A js motor újpokemonName példány és kötéspokemon mintthis változó. Fontos megérteni, hogy másolja a pokemonName funkciót.
  2. létrehozása után egy példányát a pokemonNamefunkció képes hívni logPokemon(), 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:

  1. további paramétereket is Elfogad
  2. azonnal végrehajtja a hívott funkciót.
  3. acall() 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:

értesítés, hogy alkalmazni elfogadja és tömb, és hívás elvárja minden param külön-külön.

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 ❤