A különbség a JavaScript hívási, alkalmazási és kötési módszerei között

Fúrjuk be az elménkbe, és végezzünk vele egyszer és mindenkorra.

Azért írom ezt a mikropostot, mert az előbb említett kérdés nagyon sokáig kísért, és tudtam, hogy nem én vagyok az egyetlen. Minden egyes alkalommal láttam, hogy valaki használja a három módszer bármelyikét, és rohannom kellett az MDN-re, hogy rájöjjek, mi történik.

Elég volt. Tudtam, hogy valamit tennem kell, és megtettem. Állítólag létrehoztam egy közmondásos ezüst golyót, amely segíthet az új JavaScript fejlesztőknek.

Jogi nyilatkozat : Ez nem elméleti megoldás, hanem valóban hacky módszer a különbség emlékezetére.

A call()és a apply()módszerek közötti összetévesztés legfőbb oka az , hogy miként adhatók meg a további érvek this. És miért van nálunk bind()egyébként?

Tanuljuk meg, hogyan lehet könnyen megkülönböztetni a hármat.

Alkalmaz()

apply(this [, [arg1, arg2,...]]): Meghív egy megadott thisértékű függvényt . A további érveket egyetlen tömbként adjuk meg .

Emlékezetes módszer : „ A szakember elfogadja az érveket A rray-ként” vagy „ AA ” -ként

Hívás()

call(this [, arg1, arg2...]): Meghív egy függvényt egy megadottal this. A további argumentumok vesszővel elválasztott listaként kerülnek megadásra

Emlékezetes módszerek: „A Call argumentumait vessző választja el egymástól” vagy „ CC ”.

Kötés ()

bind(this): Egy új függvényt ad vissza, amelynek thisértéke a megadott értékhez van kötve.

Emlékezetes módszerek: a bind () az egyetlen módszer a három közül, amely teljesen új függvényt ad vissza. Nem hívja meg a függvényt.

Tekerje be

Remélem, hogy a fenti magyarázat néhányat segíthet odakinn. Ez minden bizonnyal segít nekem.

Van más memorizálási trükkje a programozással kapcsolatban? Kérjük, ossza meg a közösséggel, mivel mindenkinek segítséget nyújt. Különösen az interjúk során.

Ha bármilyen kérdése van vagy kétségei vannak, írjon a Twitter @ rajat1saxena címre, vagy írjon nekem a [email protected] címre. Kérjük, ajánlja ezt a bejegyzést, ha tetszett, és ossza meg hálózatával.