Kuidas kasutada JavaScripti rakenduse (?), Call (?) Ja bind (➰) meetodeid

Selles artiklis räägime funktsiooni prototüübi ahela rakendamise, kutsumise ja sidumise meetoditest. Need on mõned JavaScripti kõige olulisemad ja sageli kasutatavad mõisted ning on selle märksõnaga väga tihedalt seotud .

Seega, selles artiklis sisalduva teabe mõistmiseks peate kõigepealt tundma selle märksõna mõistet ja kasutamist . Kui olete sellega juba tuttav, võite jätkata - muul juhul võite sellele artiklile siin viidata ja siis siia tagasi tulla.

Õppida kohaldada | kõne | seovad peame teadma funktsioone JavaScript liiga, eeldades olete tuttav selle .

Funktsioonid

Funktsiooni konstruktor loob uue funktsiooni objekti. Konstruktorile otse helistades saab dünaamiliselt luua funktsioone, mida saab täita globaalses ulatuses.

Kuna funktsioonid on JavaScripti objektid, kontrollib nende esilekutsumist meetodid Apply , Call ja bind .

Selle kontrollimiseks, kas funktsioon on objekt Funktsioon, saame kasutada järgmises koodilõigus olevat koodi, mis tagastab tõese.

Objektil Globaalne funktsioon pole ühtegi oma meetodit ega omadust. Kuna tegemist on funktsiooniga iseenesest, pärib see funktsiooni prototüübi ahela kaudu funktsioone prototüüp. - MDN

Funktsiooni prototüübi ahelas on järgmised meetodid:

  • Function.prototype.apply ()
  • Function.prototype.bind ()
  • Funktsioon.prototüüp.kõne ()
  • Funktsioon.prototüüp.isGenerator ()
  • Funktsioon.prototüüp.toSource ()
  • Object.prototype.toSource
  • Funktsioon.prototüüp.toString ()
  • Object.prototype.toString

Oleme mures esimese kolme pärast, nii et alustame.

Kas taotleda?

Meetod Apply () on funktsiooni prototüübi oluline meetod ja seda kasutatakse teiste funktsioonide kutsumiseks tingimusel, et see märksõna väärtus ja argumendid on esitatud massiivi või massiivisarnase objekti kujul.

Massiivitaolised objektid võivad viidata funktsiooni NodeList või argumentide objektile.

See tähendab, et saame kutsuda mis tahes funktsiooni ja täpsustada, millele see peaks kutsumisfunktsioonis viitama.

Süntaks

Tagasi

See tagastab funktsiooni tulemuse, millele see tugineb .

Kirjeldus

Rakendada meetodit kasutatakse võimaldades funktsioonina / kuuluva eseme objekti x võib nimetada ja määratud objekti y.

Näited

1.

Antud koodilõigust nähtuna näeme, et kui massiivi teise sisse lükata, käsitletakse kogu massiivi ühe elemendina ja surutakse massiivi muutuja sisse.

Aga mis siis, kui me tahame, et elemendid lükataks massiivi asemel eraldi? Muidugi, selleks on sõna otseses mõttes n arvu viise, kuid kasutame seda õppimise ajal:

Antud näites näeme rakenduse rakendamist kahe antud massiivi ühendamisel. Argumentide massiiv on elementide massiiv ja see argument osutab massiivi muutujale. Elementide massiivi elemendid lükatakse objektile ( massiivile ), millele see onosutades . Tulemuse saame, kui teise massiivi üksikud elemendid lükatakse massiivi juurde, millele see on suunatud.

2.

JS-i funktsiooni max kasutatakse elementide kogumist maksimaalse väärtusega elemendi leidmiseks. Kuid nagu näeme väljavõttest, kui väärtused on massiivi kujul, saame tulemuseks NaN. Kindlasti räägime JavaScripti, nii et jällegi on selleks n mitut võimalust, kuid kasutame rakendust Apply.

Nüüd, kui kasutame rakendust ja funktsiooni Math.max () kasutamist, saame tulemuse. Nagu me teame, võtab rakendus kõik massiivi väärtused üksikute argumentidena ja seejärel rakendatakse neile funktsiooni max. See annab meile massiivi maksimaalse väärtuse.

Üks huvitav märkida siin on see, et koht selles on kasutatud null. Kuna argumenti.Ta on number massiiv, isegi kui see on kehtestatud siis osutavad samale massiivi ja me võtame sama tulemuse. Seetõttu võime sellistel juhtudel selle asemel kasutada nulli . See näitab meile, et see argument funktsioonis Apply on valikuline argument.

Helistama

Kõne () meetodit kasutatakse helistamiseks funktsiooni antud käesoleva ja argumente, mida talle individuaalselt.

See tähendab, et me võime kutsuda mis tahes funktsiooni, täpsustades selgesõnaliselt viite, millele see peaks viitama kutsuvas funktsioonis.

See on rakendusega väga sarnane , ainus erinevus on see, et kohaldamisel on argumente massiivi või massiivitaoliste objektidena ja siin esitatakse argumendid eraldi.

Süntaks

Tagasi

Määratud thisväärtuse ja argumentidega funktsiooni kutsumise tulemus .

Kirjeldus

Kõne meetodit kasutatakse võimaldades funktsioonina / kuuluva eseme objekti x võib nimetada ja määratud objekti y.

Näited

1.

See on konstruktorite aheldamise näide. Nagu näeme, nimetatakse igas funktsioonis toote konstruktorit ja kõne kasutamisel on toote omadused aheldatud vastavalt Pizza ja mänguasi objektidega.

Kui objektidele Pizza ja Mänguasi luuakse uusi eksemplare, esitatakse parameetrid nime, hinna ja kategooriana. Kategooriat rakendatakse ainult definitsioonis, kuid nime ja hinda kasutatakse toote objekti aheldatud konstruktori abil, nagu need on toote objektis määratletud ja rakendatud. Pisut rohkem näpistades saame pärimise.

2.

Ülalolevas jupis määratlesime funktsiooni, mida nimetatakse uneks. See koosneb massiivi vastusest, mis koosneb elementidest, mis adresseerivad selle märksõna abil atribuute . Need on määratletud eraldi objektis väljaspool funktsiooni.

Funktsiooni une kutsutakse argumendina objekti obj . Nagu näeme, on obj omadused seatud vastavalt sellele.loom ja see.magamisaeg ning saame väljundina kogu lause.

Seotud➰

Meetod bind () loob uue funktsiooni, mille kutsumisel on thismärksõnaks määratud väärtus, kusjuures antud funktsiooni argumendid järgnevad kõigile, mis uue funktsiooni kutsumisel pakutakse. - MDN

Süntaks

Tagasi

Bind tagastab funktsiooni koopia koos selle ja argumentidega.

Kirjeldus

Seovad funktsioon on palju nagu kõne funktsioon, mille peamine erinevus on see, et siduda naaseb uue funktsiooni arvestades kõne ei ole.

Vastavalt ECMAScript 5 spetsifikatsioonidele on sidumisega tagastatud funktsioon eksootilise funktsiooni objekti (nagu nad seda nimetavad) eritüüp, mida nimetatakse funktsiooniks Bound ( Bound ) . BF mähib algse funktsiooni objekti. BF-i kutsumine käivitab selles pakitud funktsiooni.

Näited

1.

Ülalolevas jupis oleme määranud muutuja x ja objekti nimega moodul. See sisaldab ka omadust nimega x ja teist omadust, mille vastav väärtus on funktsioon, mis tagastab x väärtuse .

Funktsiooni getX kutsumisel tagastab objekti sees määratletud x väärtused, mitte globaalses ulatuses x .

Teine muutuja deklareeritakse globaalses ulatuses, mis kutsub funktsiooni getX mooduli objektilt. Aga kui muutuja on globaalne ulatus, seda on getX punkte globaalse x ja seega 9 tagastatakse.

Määratletakse veel üks muutuja, mis kutsub eelmist funktsiooni, kuid seekord seob nimetatud funktsiooni mooduli objektiga. See sidumine tagastab objekti väärtuse x . Seostamise tõttu osutab see funktsioonis x väärtusele objektil, mitte globaalsele x-le . Seega saame väljundiks 81

Järeldus

Nüüd, kui oleme õppinud meetodite põhitõdesid, võite ikkagi veidi segaduses olla, miks on 3 erinevat funktsiooni, mis teevad peaaegu sama asja. Selle kontseptsiooni selgitamiseks peate harjutama erinevate olukordade ja stsenaariumidega, et saaksite põhjalikumalt teada, kus ja kuidas neid saab kasutada. Nad muudavad teie koodi kindlasti puhtamaks ja võimsamaks.

Kui teile see artikkel meeldis, klõpsake palun? ja järgima? rohkem.