Binding statico vs dinamico in JavaScript

Binding statico vs dinamico in JavaScript

In JavaScript, vincolo è il processo di collegamento della definizione della funzione corretta con una chiamata di funzione o associare un valore a una variabile. Un indirizzo di memoria viene assegnato a ciascuna definizione della funzione in fase di compilazione. Quando viene invocata una particolare funzione, l'esecuzione del programma sposta il controllo a quell'indirizzo di memoria specifico e recupera il codice funzione memorizzato nella posizione eseguita. Questo meccanismo è noto come legame.

Il legame in JavaScript è diviso in due tipi: "Legame statico" e "legame dinamico". Se tutte le informazioni richieste relative alle chiamate di funzione e all'assegnazione variabile sono già note Compile-time, Si chiama legame statico. Nell'altro caso, il legame dinamico si verifica quando le informazioni richieste vengono riconosciute a Runtime.

Questo articolo spiegherà Binding statico e legame dinamico in JavaScript con l'aiuto di esempi appropriati. Quindi iniziamo!

Binding statico in JavaScript

Javascript "Legame statico"Si verifica quando un compilatore riconosce tutte le informazioni richieste relative all'assegnazione di valori alle variabili o invocando una funzione, in fase di compilazione. È anche noto come "Raccolta di legame a tempo" o "legame precoce".

La tecnica di legame statico JavaScript è implementata durante il processo di codifica, rendendo il programma di più efficiente Perché tutti i valori variabili e le chiamate della funzione sono predefiniti in questo tipo di legame. Tuttavia, influisce anche sulla flessibilità del codice.

Alcuni esempi della procedura di legame statico sono: "Operatore sovraccarico" e "sovraccarico di funzioni".

Ora, diamo un'occhiata a come funziona il legame statico dietro il sovraccarico dell'operatore e il sovraccarico delle funzioni in JavaScript.

Sovraccarico dell'operatore con legame statico in JavaScript

JavaScript ci consente di ridefinire il modo in cui gli operatori funzionano per vari tipi definiti dall'utente come strutture e oggetti. Questa funzionalità è nota come Sovraccarico dell'operatore.

Esempio: sovraccarico dell'operatore con legame statico in JavaScript

Poiché il sovraccarico dell'operatore fornisce la funzionalità per modificare il comportamento dell'operatore specificato al momento della compilazione, useremo questa funzionalità per ridefinire il comportamento dell'operatore "+":

Ad esempio, puoi utilizzare il "+" operatore per aggiungere due numeri:

3 + 6

O per concatenare le corde:

'Linux' + " + 'Suggerimento'

O per concatenare i numeri con stringhe:

1 + 'articolo'

Produzione

Al momento della compilazione, operatore "+" è sovraccarico in base al tipo di dati che abbiamo usato. Ad esempio, "3" + "6" creato un nuovo numero "9", mentre "1" + "Articolo" ha generato una stringa "1 articolo". È così che abbiamo implementato il sovraccarico dell'operatore con l'aiuto del legame statico.

Sovraccarico di funzioni con legame statico in javascript

Sovraccarico di funzioni è un altro esempio di legame statico in cui sono definite più funzioni con Lo stesso nome con parametri diversi. La chiamata di funzione si lega alla funzione corretta in base agli argomenti passati al momento della compilazione.

Esempio 1: sovraccarico di funzioni con legame statico in JavaScript

In Sovraccarico di funzioni, I metodi aggiunti possono avere lo stesso nome, ma per sovraccaricarli, devi passare argomenti diversi, cambiando i risultati di conseguenza.

Ad esempio, abbiamo creato due funzioni con lo stesso nome. Il primo "spettacolo()"La funzione accetta due argomenti, "X" e "Y" E restituisce la loro somma:

Funzione Show (x, y)
restituire x+y;

Il secondo "spettacolo()"La funzione accetterà e restituirà il superato"z" discussione:

funzione show (z)
restituire z;

Ora quando passiamo "3" e "5" valori come argomenti, il Funzione "Show (3,5)" la chiamata si lega alla funzione prima show (), che accetta ha due parametri, mentre quando è specificato un argomento, il Funzione "Show (2)" la chiamata si lega alla funzione Second Show ():

spettacolo (3,5);

Produzione

mostra (2);

Produzione

Nell'esempio sopra dato, entrambi hanno aggiunto "spettacolo()"Le funzioni sono legate statisticamente al momento della compilation. Di conseguenza, non verrà sprecato tempo a determinare quale funzione chiamare, che si traduce Esecuzione del programma rapido ed efficiente.

Ora andremo avanti e discuteremo di legame dinamico in JavaScript.

Binding dinamico in JavaScript

"Binding dinamico" in JavaScript è il processo di assegnazione di un valore a una variabile o invoca una funzione in fase di esecuzione. È anche noto come "Legame runtime" o "vincolo tardivo" Poiché l'associazione della funzione chiama la funzione corretta o l'assegnazione dei valori alle rispettive variabili viene ritardato fino al tempo di runtime.

Il legame dinamico consente al programma di essere di più flessibile Permettendo agli utenti di scegliere quale funzione dovrebbe essere invocata e quale valore assegnare a una variabile al momento dell'esecuzione. Tuttavia, esso rallenta l'esecuzione, Poiché tutte le informazioni specificate vengono fornite in tempo di esecuzione.

"Metodo prevalente"È un eccellente esempio dell'utilizzo del legame dinamico in JavaScript.

Metodo prevalente con il legame dinamico in JavaScript

In JavaScript, metodo prevalente è un meccanismo che consente a una classe figlio di implementare il metodo della classe genitore in modo diverso. In questo modo, la classe figlio sovrascrive il metodo della classe genitore con l'aiuto di legame dinamico.

Esempio: metodo sovrascrivendo al legame dinamico in JavaScript

In questo esempio, sovrascriveremo il "parlare()Metodo del "Uccelli"Classe (genitore). A tale scopo, definiremo ulteriormente due "parlare()Metodi ", prima in"Gufo"Classe e seconda in"Piccione"Classe, e poi invoca il"parlare()"Metodo di entrambe queste classi di bambini:

Classe Birds
parlare()
console.log ("Gli uccelli hanno suoni diversi");


Class Owl estende gli uccelli
parlare()
console.log ("Owl dice screeeeee");


Class Pigeon estende gli uccelli
parlare()
console.log ("piccione dice coo coo coo");


const owl = new Owl ();
const piccion = new picone ();
gufo.parlare();
piccione.parlare();

Può essere visto dallo sotto l'output Metodo di Speak () della classe Birds è ignorato dalle sue classi di figli a causa del legame dinamico:

Si trattava di tutto Binding statico vs dinamico in JavaScript. Puoi esplorare ulteriormente questo argomento in base alle tue esigenze.

Conclusione

Binding statico in JavaScript si verifica quando un compilatore riconosce tutte le informazioni richieste relative all'assegnazione di valori variabili o invocano una funzione in fase di compilazione, mentre Legame dinamico sta assegnando un valore a una variabile o invocando un valore invocando una funzione in fase di esecuzione. Sovraccarico di sovraccarico e sovraccarico dell'operatore sono basati su Binding statico e metodo prevalente è considerato un esempio di legame dinamico. Questo articolo ha discusso di legame statico e legame dinamico in JavaScript con l'aiuto di esempi adeguati.