Vinculación dinámica estática vs en JavaScript

Vinculación dinámica estática vs en JavaScript

En JavaScript, vinculante es el proceso de vincular la definición de función correcta con una llamada de función o asociar un valor a una variable. Se asigna una dirección de memoria a cada definición de función en la fase de compilación. Cuando se invoca una función en particular, la ejecución del programa cambia el control a esa dirección de memoria específica y obtiene el código de función almacenado en la ubicación ejecutada. Este mecanismo se conoce como vinculante.

La unión en JavaScript se divide en dos tipos: "Enlace estático" y "vinculación dinámica". Si toda la información requerida relacionada con las llamadas de funciones y la asignación de variables ya se conoce en tiempo de compilación, se llama encuadernación estática. En el otro caso, la unión dinámica se produce cuando se reconoce la información requerida en tiempo de ejecución.

Este artículo explicará Vinculación estática y vinculación dinámica en JavaScript con la ayuda de ejemplos apropiados. Entonces, comencemos!

Vinculación estática en JavaScript

JavaScript "Enlace estático"Ocurre cuando un compilador reconoce toda la información requerida relacionada con la asignación de valores a variables o invocando una función, en la fase de compilación. También se conoce como "Compilar en el tiempo de enlace" o "vinculación temprana".

La técnica de enlace estática JavaScript se implementa durante el proceso de codificación, lo que hace que el programa sea más eficiente porque todos los valores variables y las llamadas de función están predefinidas en este tipo de enlace. Sin embargo, también afecta la flexibilidad del código.

Algunos ejemplos del procedimiento de unión estática son: "Sobrecarga del operador" y "sobrecarga de funciones".

Ahora, veremos cómo funciona la vinculación estática detrás de la sobrecarga del operador y la sobrecarga de funciones en JavaScript.

Sobrecarga del operador con enlace estático en JavaScript

JavaScript nos permite redefinir cómo funcionan los operadores para varios tipos definidos por el usuario, como estructuras y objetos. Esta funcionalidad se conoce como Sobrecarga del operador.

Ejemplo: sobrecarga del operador con enlace estático en JavaScript

Dado que la sobrecarga del operador proporciona la funcionalidad para cambiar el comportamiento del operador especificado en el tiempo de compilación, utilizaremos esta funcionalidad para redefinir el comportamiento del operador "+":

Por ejemplo, puede utilizar el "+" operador para agregar dos números:

3 + 6

O para concatenar cadenas:

'Linux' + " + 'Sugerencia'

O para concatenar números con cadenas:

1 + 'artículo'

Producción

En tiempo de compilación, operador "+" se sobrecarga según el tipo de datos que hemos utilizado. Por ejemplo, "3" + "6" Creó un nuevo número "9", mientras que "1" + "artículo" generó una cadena de "1 artículo". Así es como hemos implementado la sobrecarga del operador con la ayuda de la unión estática.

Sobrecarga de funciones con enlace estático en JavaScript

Sobrecarga de funciones es otro ejemplo de unión estática en el que se definen múltiples funciones con el El mismo nombre que tiene diferentes parámetros. La llamada de función se une a la función correcta basada en los argumentos aprobados en el momento de la compilación.

Ejemplo 1: sobrecarga de funciones con enlace estático en JavaScript

En Sobrecarga de funciones, Los métodos adicionales pueden tener el mismo nombre, pero para sobrecargarlos, debe aprobar diferentes argumentos, cambiando los resultados en consecuencia.

Por ejemplo, hemos creado dos funciones con el mismo nombre. La primera "espectáculo()"La función acepta dos argumentos, "X y Y," y devuelve su suma:

show de función (x, y)
return x+y;

El segundo "espectáculo()"La función aceptará y devolverá la aprobación"z" argumento:

show de función (z)
regresar z;

Ahora cuando pasamos "3" y "5" valores como argumentos, el Función "Show (3,5)" la llamada se unirá a la primera función show (), que acepta tiene dos parámetros, mientras que cuando se especifica un argumento, el Función "Show (2)" la llamada se unirá con la segunda función show ():

espectáculo (3,5);

Producción

espectáculo (2);

Producción

En el ejemplo anterior, ambos agregaron "espectáculo()Las funciones están obligadas estadísticamente en el momento de la compilación. Como resultado, no se perderá tiempo determinando qué función llamar, lo que da como resultado Ejecución de programa rápida y eficiente.

Ahora avanzaremos y discutiremos la vinculación dinámica en JavaScript.

Vinculación dinámica en JavaScript

"Enlace dinámico" en JavaScript es el proceso de asignar un valor a una variable o invocar una función en tiempo de ejecución. También se conoce como "Enlace de tiempo de ejecución" o "vinculación tardía" porque la unión de la función llama a la función correcta o asignación de valores a las variables respectivas se retrasa hasta el tiempo de ejecución.

La unión dinámica permite que el programa sea más flexible permitiendo a los usuarios elegir qué función debe invocarse y qué valor asignar a una variable en el momento de la ejecución. De todos modos, eso ralentiza la ejecución, Como toda la información especificada se entrega en tiempo de ejecución.

"Método primordial"Es un excelente ejemplo de la utilización de la unión dinámica en JavaScript.

Método anular con unión dinámica en JavaScript

En JavaScript, método anular es un mecanismo que permite a una clase infantil implementar el método de la clase principal de manera diferente. De esta manera, la clase infantil anula el método de la clase principal con la ayuda de vinculación dinámica.

Ejemplo: método que anula con unión dinámica en JavaScript

En este ejemplo, anularemos el "hablar()"Método del"AvesClase "(padre). Para este propósito, definiremos aún más dos "hablar()"Métodos, primero en el"Búho"Clase y segunda en el"Paloma"Clase, y luego invoca el"hablar()"Método de ambas clases infantiles:

Aves de clase
hablar()
consola.log ("las aves tienen sonidos diferentes");


Class Owl extiende pájaros
hablar()
consola.log ("Owl dice screeeeee");


Class Pigeon extiende pájaros
hablar()
consola.log ("Pigeon dice COO COO COO");


const owl = new Owl ();
const pigeon = new Pigeon ();
búho.hablar();
paloma.hablar();

Se puede ver en la siguiente salida el hablar () método de clase de pájaros es anulado por sus clases de hijos debido a la vinculación dinámica:

De eso se trataba Vinculación dinámica estática vs en JavaScript. Puede explorar más a fondo este tema de acuerdo con sus requisitos.

Conclusión

Vinculación estática en JavaScript ocurre cuando un compilador reconoce toda la información requerida relacionada con la asignación de valores variables o invocando una función en la fase de compilación, mientras que Vinculación dinámica está asignando un valor a una variable o invocar un valor de invocación una función en tiempo de ejecución. Sobrecarga de funciones y sobrecarga del operador estan basados ​​en Unión estática y anular el método se considera un ejemplo de unión dinámica. Este artículo sobre la unión estática y la vinculación dinámica en JavaScript con la ayuda de ejemplos adecuados.