Statisk vs dynamisk binding i JavaScript

Statisk vs dynamisk binding i JavaScript

I JavaScript, binding er prosessen med å koble riktig funksjonsdefinisjon med en funksjonsanrop eller knytte en verdi til en variabel. En minneadresse tildeles hver funksjonsdefinisjon i kompilasjonsfasen. Når en bestemt funksjon påkalles, skifter programutførelsen kontrollen til den spesifikke minneadressen og henter funksjonskoden som er lagret på det utførte stedet. Denne mekanismen er kjent som binding.

Binding i JavaScript er delt inn i to typer: “Statisk binding” og “dynamisk binding”. Hvis all nødvendig informasjon relatert til funksjonssamtaler og variabel tildeling allerede er kjent kl kompileringstid, det kalles statisk binding. I det andre tilfellet oppstår dynamisk binding når den nødvendige informasjonen er anerkjent på Kjøretid.

Denne oppskrivningen vil forklare Statisk binding og dynamisk binding i JavaScript ved hjelp av passende eksempler. Så la oss starte!

Statisk binding i JavaScript

JavaScript “Statisk binding”Forekommer når en kompilator gjenkjenner all nødvendig informasjon relatert til å tilordne verdier til variabler eller påkalle en funksjon, i kompilasjonsfasen. Det er også kjent som “Compile-Time Binding” eller “Early Binding”.

JavaScript statisk bindingsteknikk implementeres under kodingsprosessen, noe som gjør programmet mer effektiv Fordi alle variable verdier og funksjonsanropene er forhåndsdefinert i denne typen bindinger. Imidlertid påvirker det også kodefleksibilitet.

Noen eksempler på den statiske bindingsprosedyren er: "Overbelastning av operatør" og "Funksjonsoverbelastning".

La oss nå sjekke ut hvordan statisk binding fungerer bak operatørens overbelastning og funksjon overbelastning i JavaScript.

Operatøroverbelastning med statisk binding i JavaScript

JavaScript tillater oss å omdefinere hvordan operatører jobber for forskjellige brukerdefinerte typer som strukturer og objekter. Denne funksjonaliteten er kjent som Operatøroverbelastning.

Eksempel: Overbelastning av operatør med statisk binding i JavaScript

Siden overbelastning av operatøren gir funksjonaliteten for å endre oppførselen til den spesifiserte operatøren på kompileringstid, vil vi bruke denne funksjonaliteten for å omdefinere oppførselen til "+" -operatøren:

For eksempel kan du bruke “+” Operatør for å legge til to tall:

3 + 6

Eller til sammenkoblingsstrenger:

'linux' + " + 'hint'

Eller til sammenkoblingstall med strenger:

1 + 'Artikkel'

Produksjon

På kompileringstid, operatør “+” er overbelastet basert på hvilken type data vi har brukt. For eksempel, “3” + “6” opprettet et nytt nummer “9”, mens “1” + “Artikkel” genererte en “1 artikkel” -streng. Slik har vi implementert overbelastning av operatøren ved hjelp av statisk binding.

Funksjonsoverbelastning med statisk binding i JavaScript

Funksjon overbelastning er et annet eksempel på statisk binding der flere funksjoner er definert med Samme navn med forskjellige parametere. Funksjonsanropet binder seg til riktig funksjon basert på de beståtte argumentene på kompilasjonstiden.

Eksempel 1: Funksjonsoverbelastning med statisk binding i JavaScript

I Funksjon overbelastning, De ekstra metodene kan ha samme navn, men for å overbelaste dem, må du passere forskjellige argumenter og endre resultatene deretter.

For eksempel har vi laget to funksjoner med samme navn. Den første "forestilling()”Funksjon godtar to argumenter, “X” og “Y,” Og det returnerer summen deres:

funksjonshow (x, y)
returner x+y;

Den andre "forestilling()”Funksjonen vil godta og returnere den passerte”z”Argument:

funksjonshow (z)
return z;

Nå når vi passerer “3” og “5” verdier som argumenter, “Show (3,5)” -funksjon Call vil binde seg til First Show () -funksjonen, som aksepterer har to parametere, mens når ett argument er spesifisert, er det “Vis (2)” -funksjon Call vil binde med den andre showet () -funksjonen:

vis (3,5);

Produksjon

show (2);

Produksjon

I det ovennevnte eksemplet lagt begge lagt til “forestilling()”Funksjoner er statistisk bundet til sammenstillingstiden. Som et resultat vil ingen tid bli bortkastet å bestemme hvilken funksjon du skal ringe, noe som resulterer i Rask og effektiv programutførelse.

Vi vil nå komme videre og diskutere dynamisk binding i JavaScript.

Dynamisk binding i JavaScript

“Dynamisk binding” i JavaScript er prosessen med å tildele en verdi til en variabel eller påkalle en funksjon ved kjøretid. Det er også kjent som “Runtime Binding” eller “Late Binding” Fordi bindingen av funksjonen kaller til riktig funksjon eller tildeling av verdier til de respektive variablene er forsinket til kjøretid.

Dynamisk binding gjør at programmet kan være mer fleksibel Ved å tillate brukere å velge hvilken funksjon som skal påberopes og hvilken verdi de skal tilordne en variabel på utførelsestiden. Imidlertid det bremser henrettelsen, ettersom all den spesifiserte informasjonen leveres ved kjøretid.

Metode overstyrer”Er et utmerket eksempel på bruk av dynamisk binding i JavaScript.

Metode som overstyrer med dynamisk binding i JavaScript

I JavaScript, Metode overordnede er en mekanisme som lar en barneklasse implementere metoden for foreldreklassen på en annen måte. På denne måten overstyrer barneklassen foreldreklassemetoden ved hjelp av dynamisk binding.

Eksempel: Metode som overstyrer med dynamisk binding i JavaScript

I dette eksemplet vil vi overstyre "snakke()”Metode for“Fugler”(Foreldre) klasse. For dette formålet vil vi ytterligere definere to “snakke()”Metoder, først i“Ugle”Klasse og andre i“Due”Klasse, og påkalle deretter“snakke()”Metode for begge disse barneklassene:

klassefugler
snakk ()
konsoll.Logg ("Fugler har forskjellige lyder");


Klasse ugle utvider fugler
snakk ()
konsoll.Logg ("Owl sier screeeee");


Klasseporen utvider fugler
snakk ()
konsoll.Log ("Pigeon sier Coo COO COO");


const ugle = ny ugle ();
const due = new Pigeon ();
ugle.snakke();
Due.snakke();

Det kan sees fra underutgangen nedenfor Snakk () Metode for fuglerklasse blir overstyrt av sine barneklasser på grunn av den dynamiske bindingen:

Det handlet om Statisk vs dynamisk binding i JavaScript. Du kan utforske dette emnet ytterligere i henhold til dine krav.

Konklusjon

Statisk binding i JavaScript oppstår når en kompilator gjenkjenner all nødvendig informasjon relatert til tildelingen av variable verdier eller påkaller en funksjon i kompilasjonsfasen, mens Dynamisk binding tildeler en verdi til en variabel eller påkaller en påkallingsverdi en funksjon ved kjøretid. Funksjon overbelastning og operatøroverbelastning er basert på Statisk binding, og metode som er overordnet regnes som et eksempel på dynamisk binding. Denne oppskrivningen diskuterte statisk binding og dynamisk binding i JavaScript ved hjelp av passende eksempler.