Vstatic vs Dynamic Binding in JavaScript

Vstatic vs Dynamic Binding in JavaScript

Em JavaScript, ligação é o processo de vincular a definição de função correta a uma chamada de função ou associar um valor a uma variável. Um endereço de memória é atribuído a cada definição de função na fase de compilação. Quando uma função específica é invocada, a execução do programa muda o controle para esse endereço de memória específico e busca o código de função armazenado no local executado. Este mecanismo é conhecido como vinculativo.

A ligação no JavaScript é dividida em dois tipos: “Ligação estática” e “ligação dinâmica”. Se todas as informações necessárias relacionadas às chamadas de função e atribuição de variáveis ​​já for conhecida em tempo de compilação, é chamado de ligação estática. No outro caso, a ligação dinâmica ocorre quando as informações necessárias são reconhecidas em tempo de execução.

Este artigo vai explicar Ligação estática e ligação dinâmica em JavaScript com a ajuda de exemplos apropriados. Então vamos começar!

Ligação estática em javascript

JavaScript “Ligação estática”Ocorre quando um compilador reconhece todas as informações necessárias relacionadas à atribuição de valores a variáveis ​​ou invocando uma função, na fase de compilação. Também é conhecido como “Cindagem do tempo de compilação” ou “ligação precoce”.

A técnica de ligação estática JavaScript é implementada durante o processo de codificação, tornando o programa mais eficiente Porque todos os valores variáveis ​​e as chamadas de função são predefinidas nesse tipo de ligação. No entanto, também afeta a flexibilidade do código.

Alguns exemplos do procedimento de ligação estática são: "Sobrecarregamento do operador" e "sobrecarga de funções".

Agora, vamos verificar como a ligação estática funciona por trás da sobrecarga do operador e da sobrecarga de funções em JavaScript.

Sobrecarga do operador com ligação estática em JavaScript

O JavaScript nos permite redefinir como os operadores funcionam para vários tipos definidos pelo usuário, como estruturas e objetos. Esta funcionalidade é conhecida como Sobrecarga do operador.

Exemplo: sobrecarga do operador com ligação estática em JavaScript

Como a sobrecarga do operador fornece a funcionalidade para alterar o comportamento do operador especificado em tempo de compilação, usaremos essa funcionalidade para redefinir o comportamento do operador "+":

Por exemplo, você pode utilizar o "+" Operador para adicionar dois números:

3 + 6

Ou para concatenar strings:

'Linux' + " + 'dica'

Ou concatenar números com strings:

1 + 'artigo'

Saída

Em tempo de compilação, operador "+" está sobrecarregado com base no tipo de dados que usamos. Por exemplo, “3” + “6” criou um novo número "9", enquanto que "1" + "Artigo" gerou uma string "1 artigo". Foi assim que implementamos sobrecarga do operador com a ajuda da ligação estática.

Sobrecarga de função com ligação estática em javascript

Sobrecarga da função é outro exemplo de ligação estática na qual múltiplas funções são definidas com o mesmo nome com parâmetros diferentes. A chamada de função se liga à função correta com base nos argumentos aprovados no tempo de compilação.

Exemplo 1: sobrecarga da função com ligação estática em javascript

Em Sobrecarga da função, Os métodos adicionados podem ter o mesmo nome, mas para sobrecarregá -los, você precisa passar por argumentos diferentes, alterando os resultados de acordo.

Por exemplo, criamos duas funções com o mesmo nome. O primeiro "mostrar()”A função aceita dois argumentos, "X" e "Y", E retorna a soma deles:

Função mostra (x, y)
retornar x+y;

O segundo "mostrar()”A função aceitará e devolverá o aprovado“z”Argumento:

Função mostra (z)
retornar z;

Agora, quando passamos "3" e "5" valores como argumentos, o Função “Mostrar (3,5)” A chamada se ligará à função do primeiro show (), que aceita tem dois parâmetros, enquanto quando um argumento é especificado, o Função “Show (2)” A chamada será vinculada à função Second Show ():

show (3,5);

Saída

show (2);

Saída

No exemplo acima, ambos acrescentaram “mostrar()”As funções estão ligadas estatisticamente no momento da compilação. Como resultado, nenhum tempo será desperdiçado determinando qual função chama, o que resulta em Execução rápida e eficiente do programa.

Agora seguiremos em frente e discutiremos a ligação dinâmica em JavaScript.

Ligação dinâmica em javascript

"Ligação dinâmica" em JavaScript é o processo de atribuir um valor a uma variável ou invocar uma função em tempo de execução. Também é conhecido como “Ligação de tempo de execução” ou “encadernação tardia” Porque a ligação das chamadas de função à função correta ou atribuição de valores às respectivas variáveis ​​é atrasada até o tempo de execução.

A ligação dinâmica permite que o programa seja mais flexível Ao permitir que os usuários escolham qual função deve ser invocada e qual valor atribuir a uma variável no tempo de execução. no entanto Retarda a execução, Como todas as informações especificadas são entregues em tempo de execução.

““Método substituindo”É um excelente exemplo da utilização da ligação dinâmica em JavaScript.

Método substituindo a ligação dinâmica em JavaScript

Em JavaScript, substituição do método é um mecanismo que permite que uma classe infantil implemente o método da classe pai de uma maneira diferente. Dessa forma, a classe infantil substitui o método da classe pai com a ajuda de ligação dinâmica.

Exemplo: Método, substituindo a ligação dinâmica em JavaScript

Neste exemplo, substituiremos o “falar()”Método do“PássarosClasse (pai). Para esse fim, definiremos ainda mais dois “falar()”Métodos, primeiro no“Coruja”Classe e segundo no“Pombo”Classe, e depois invocará o“falar()”Método de ambas as classes infantis:

Aves de classe
falar()
console.log ("Os pássaros têm sons diferentes");


classe Owl estende os pássaros
falar()
console.log ("Owl Says Screeeeee");


classe Pigeon estende os pássaros
falar()
console.log ("Pigeon diz COO COO COO");


const coruja = new Owl ();
Const Pigeon = New Pigeon ();
coruja.falar();
Pombo.falar();

Pode ser visto na saída abaixo do Speak () Method of Birds Class é substituído por suas classes infantis por causa da ligação dinâmica:

Isso era tudo sobre Vstatic vs Dynamic Binding in JavaScript. Você pode explorar ainda mais este tópico de acordo com seus requisitos.

Conclusão

Ligação estática em javascript ocorre quando um compilador reconhece todas as informações necessárias relacionadas à atribuição de valores variáveis ​​ou invocando uma função na fase de compilação, enquanto Ligação dinâmica está atribuindo um valor a uma variável ou chamando um valor de invocação uma função em tempo de execução. Sobrecarga de função e sobrecarga do operador são baseadas em Ligação estática e substituição do método é considerado um exemplo de ligação dinâmica. Este artigo discutiu a ligação estática e a ligação dinâmica em JavaScript com a ajuda de exemplos adequados.