JavaScript .vyzývat() .použít () a .bind () – vysvětleno celkem noob

JavaScript má řadu vestavěných funkcí / metod, které se mohou vztahovat na různé datové typy.

stejně jako .split(„“) se může vztahovat na řetězec, .vyzývat(), .použít () a .bind() jsou metody funkcí.

tyto 3 funkce jsou navrženy tak, aby nastavily kontext, nebo konkrétněji, na co se“ toto “ vztahuje.

většinu času byste vždy definovali „toto“ nebo jej výslovně zahrnuli do funkce., Například, řekněme, že budete mít objekt:

var owen = { name: "Owen"}

A chcete, aby odkaz na tento objekt pomocí funkce:

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

Teď, když vyslovil sato funkce na Owena, s 2 argumenty, bylo by to vyvolat správně, protože

Teď, co když sato byla definována trochu jinak?

první argument, owen, jde do první proměnné, “ hi „jde do druhé proměnné a“ jak se máš?“nikam nevede a this.name je nedefinovaný, protože to není objekt owen.

to při konzoli.,přihlaste se, ve skutečnosti vrátí objekt globálního okna.

použití .volání ()

.volání() umožňuje funkci sayTo pracovat:

zápis je následující:

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

.volání v podstatě vynucuje hodnotu v této funkci podle toho, která funkce .hovor je aplikován na. V tomto případě se odvoláváme na funkci sayTo. .call (owen, …) nutí toto sayTo () být owenovým objektem. Tak this.name platí.

„Ahoj“ a “ jak se máš?“jsou zadány jako druhý nebo třetí argument funkce sayTo (což trvá 2 argumenty).

použití .použít ()

použití .,použít () je velmi podobný .vyzývat. Jediný rozdíl je v tom .volání () trvá arg1 a arg2 jen jeden po druhém.

pro .apply() do práce, argumenty 1 a 2 musí být zadán jako maticový:

formát je následující:

functionName.apply(value of this, )

Všimněte si, že arg1 a arg2 je zadán jako maticový.

použití .bind ()

.vázat (), na rozdíl od .použít () a .volání(), vrátí funkci namísto hodnoty.

.bind () nastaví hodnotu tohoto a změní funkci na novou funkci, ale nevyvolává funkci.,

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

v podstatě je sayToOwen vytvořen jako nová funkce. Což je techincally:

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

pak můžete spustit sayToOwen jako normální funkci.

můžete také „svázat“ argumenty sato ():

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

proměnné sayHiToOwen pak se stane:

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

Shrnutí

Leave a Comment