JavaScript .hívás() .alkalmazni () és .bind () – magyarázható, hogy a teljes noob

JavaScript számos beépített funkció / módszerek, amelyek alkalmazhatók a különböző adattípusok.

ugyanúgy .split ( ” “) lehet alkalmazni, hogy egy string,.hívás (),.alkalmazni () és .bind() a funkciók módszerei.

ezeket a 3 funkciót úgy tervezték, hogy beállítsa a kontextust, vagy pontosabban azt, amire az “Ez” utal.

A legtöbb időt, akkor mindig meg “ez”, vagy azt kifejezetten szerepel egy függvény., Például, tegyük fel, hogy egy tárgy:

var owen = { name: "Owen"}

akarsz hivatkozni, hogy ez a tárgy használata egy funkció:

function sayTo(person, first, second){ return first + " " + person.name + " " + second;}sayTo(owen, "Hi", "how are you?");
//returns "Hi Owen how are you?"

Most, ha hivatkozni a sato funkció Owen, 2 érvek, akkor hivatkozhat helyesen, mert

Most, mi van, ha sato volt meghatározott, egy kicsit másképp?

az első argumentum az első változóra, a “hi” a második változóra, a ” how are you?”nem megy sehova, és this.name nem definiált, mert ez nem az objektum owen.

a ez, ha konzol.,jelentkezzen be, valójában visszaadja a globális ablakobjektumot.

használata .hívás()

.a hívás () lehetővé teszi a sayTo funkció működését:

a jelölés a következő:

functionName.call(value of this, arg1, arg2…)

.hívás lényegében kényszeríti az értéket ebben bármelyik függvényben .a hívás be van kapcsolva. Ebben az esetben hivatkozunk a sayTo funkcióra. .call (owen, …) kényszeríti ezt a sayTo (), hogy az owen tárgy. Így this.name alkalmazható.

“Szia” és ” hogy vagy?”a sayTo függvény második vagy harmadik argumentuma (amely 2 érvet tartalmaz).

használata .alkalmazza()

segítségével .,apply () nagyon hasonlít .hívj. Az egyetlen különbség az, hogy .hívás() veszi arg1 arg2 csak egymás után.

For .alkalmazni () dolgozni, argumentumok 1 és 2 kell beírni, mint egy tömb:

a formátum a következő:

functionName.apply(value of this, )

vegye figyelembe, hogy arg1 és arg2 vannak megadva, mint egy tömb.

használata .bind()

.bind (), ellentétben .alkalmazni () és .hívás (), érték helyett egy függvényt ad vissza.

.a bind () beállítja ennek az értékét, majd a függvényt egy új függvényre változtatja, de nem hívja fel a függvényt.,

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayToOwen = sayTo.bind(owen);

lényegében sayToOwen létre, mint egy új funkciót. Ami techincally:

var sayToOwen = function(first, second){ return first + " " + owen.name + " " + second;}

akkor majd futtatni sayToOwen, mint egy normál függvény.

a sayTo() érveit is “kötheti”:

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayHiToOwen = sayTo.bind(owen, "Hi");

a sayhitoowen változó ezután:

var SayHiToOwen = function(second){
return "Hi" + " " + owen.name + " " + second;}

összefoglaló

Leave a Comment