Etiqueta: reference type

  • JS – Primitive Types & Reference Type

    El concepto más importante en JavaScript es que todo en JavaScript son objetos. Los objetos son una colección de pares nombre: valor, donde el nombre es una string y el valor puede ser un number, string, boolean o cualquier otra cosa. Una function es un objeto, un array es un objeto, un number es un objeto, una string es un objeto, un boolean y las expresiones regulares, también son objetos, todos se componen de una estructura con pares de name: value.

    El segundo concepto más importante de JavaScript son los types, hay dos grupos de types en JavaScript, primitive types y reference type. Reference type está escrito en singular, porque solo hay un tipo y es un objeto.

    Hay diferencias entre primitive types y reference type, pero antes, hablemos sobre las variables. Las variables son componentes fundamentales en cualquier lenguaje de programación, contienen un valor y este valor puede cambiar, puedes reasignarle otro valor y la variable conservará el nuevo valor y el antiguo lo borrará. Un valor es un simple registro en la memoria, y cada registro tiene un type especifico, que se dividen en dos grupos, primitive value types y reference type. La razón de esta división está en la forma en que los valores de uso de esos tipos se almacenan internamente en la memoria. 6 tipos de variables se definen como primitive types: string, boolean, number, null, undefined y symbol. Para la reference type, tenemos object.

    Primitive types

    Aquí tenemos una memoria, cada valor está almacenado en la memoria, cada uno de los 6 tipos de primitive types se almacenan en la memoria por separado, en las llamadas, celdas o células, como una secuencia de ceros y unos, y puedes leer su valor en cualquier momento.

    Reference type

    Aquí tenemos dos ejemplos de reference type, estos, no están almacenados en la memoria directamente, están separados en 2 sitios diferentes.

    Lo que vemos a la izquierda se llama pointer y simplemente contiene la ubicación del objeto en la memoria, es decir, la celda pointer apunta a otra celda donde esta el objeto.

    Cuando usas { } y colocas pares de nombre: valor, estas creando un objeto llamado object literal notation, cuando usas [ ] y colocas elementos separados por comas, estas creando un objeto llamado array literal notation.

    Los objetos creados por reference type, pueden tener múltiples pointers almacenados en diferentes celdas, pero todos ellos apuntan a un mismo objeto, cuando cambias el valor de un pointer, lo que estás cambiando es el valor en el objeto, los pointers no se modifican, permanecen en el mismo lugar de la memoria, pero el valor se actualiza para todos los pointers.

    En el siguiente ejemplo, creamos una copia de variableA y modificamos «a» a través de copiaDeA.a a 20, ahora el valor de variableA.a es 20.

    Este artículo se ha creado a partir del video 26 del curso The JavaScript Bible.