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í