Aprendiendo Ext JS 3

Referencias en JavaScript Más videos

Descripción del tema

Una referencia es un puntero al lugar exacto donde se encuentra un objeto, en JavaScript este es un concepto fundamental que debemos conocer y dominar.

Definición

Físicamente los objetos están alojados en la memoria y accedemos a ellos mediante una referencia, la cual esta contenida en una variable. Múltiples variables pueden hacer referencia al mismo objeto, a su vez este objeto puede contener referencias a otros objetos como por ejemplo strings, numbers, arrays, etc. Cuando múltiples variables apuntan a un mismo objeto y éste es modificado, el cambio se reflejará en todas las variables que están haciendo referencia al objeto. Un ejemplo de esto es lo siguiente:
//Se crea un objeto vacío
var obj = {};

//Se crea una referencia
var reference = obj;

//Se agrega una propiedad al objeto original
obj.property = 1;

//La referencia puede acceder a la propiedad recién creada
console.debug('reference.property = '+reference.property);
El mismo principio se aplica para los arreglos, aunque estos se modifican a si mismos mediante el método “push” las referencias se verán afectadas. Analicemos el ejemplo siguiente:
var array = ['Ext JS','Mootools','jQuery'];
var ref = array;

array.push('prototype');

console.debug(ref.length == array.length);
console.debug(ref);

Referencias sólo a objetos

Es importante mencionar que en JavaScript las referencias sólo apuntan a objetos en memoria y no a otras referencias como el lenguaje C/C++. En el siguiente ejemplo se muestra este comportamiento:
//Se crea el objeto original
var obj1 = {property:'Original value'};
//Se hace una referencia al objeto original
var ref1 = obj1;

//obj1 apunta a un Nuevo objeto
obj1 = {property:'New Object!'};

//Ref1 apunta al objeto original, por lo tanto son diferentes
console.debug('same object = '+(obj1.property == ref1.property));
console.debug(obj1.property);
console.debug(ref1.property);

Concatenación

Los strings también son objetos y hacemos referencia a estos mediante una variable; es importante recordar que cuando se concatena uno o más strings siempre resulta un nuevo objeto. En el siguiente ejemplo se muestra que al concatenar un texto se crea un nuevo string y por lo tanto la referencia queda apuntando al string original.
var str = 'Hello world!';
var refStr = str;

str += ' this is Crysfel';
console.debug('same string = '+(str === refStr));
Si tienen alguna duda o sugerencia sobre este tema de referencias, pueden hacer preguntas en los comentarios, con gusto las responderé.

Te gustaría recibir más tutoriales como este en tu correo?

Este tutorial pertenece al curso Aprendiendo Ext JS 3, te recomiendo revises el resto de los tutoriales ya que están en secuencia de menor a mayor complejidad.

Si deseas recibir más tutoriales como este en tu correo te recomiendo registrarte al curso, si ya eres miembro solo identifícate y registrate al curso, si no eres miembro te puedes registrar gratuitamente!

Si no gustas registrarte en este momento no es necesario! Aún así puedes recibir los nuevos tutoriales en tu correo! Jamás te enviaremos Spam y puedes cancelar tu suscripción en cualquier momento.

¿Olvidaste tu contraseña?

26Comentarios

  • Avatar-2 Carlos 13/04/2009

    muy bueno tus tutoriales sigue asi ojala sigas poniendo los demas temas que faltan saludos

    • Avatar-12 Lestat 13/04/2009

      Gracias por las lecciones saludos

      • Avatar-12 Franco 01/05/2009

        hola una correccion en el video muestra que declaras en la primera linea una objeto var obj = new Object(); pero en el texto de la pagina esta como var obj = {}; Saludos Franco

        • Avatar-12 Crysfel 04/05/2009

          Así es, realmente no importa como la manera como se declare, es exactamente lo mismo, cuestión de gustos.

          • Avatar-5 spit 20/07/2009

            Sigo el tuto... me esta gustado y es muy interesante...este capitulo es bastante importante porque yo estoy muy acostumbrado a programar en c++ lo cual me confunde mucho..un saludo.

            • Avatar-11 Cristian 19/10/2009

              Buen detalle eso de las referencias. Me queda la duda si lo que se está haciendo al referencias es clonar el objeto. Si puedes responder y aclarármelo se lo agradecería mucho. Y aprovecho de felicitarte por el Tutorial que esta buenísimo. Saludos

              • Avatar-6 Crysfel 19/10/2009

                Precizamente eso es lo que se evita al utilizar referencias, las dos variables apuntan a la misma dirección de memoria, por lo tanto las dos variables son la misma cosa, si modificas una la otra se ve modificada también. Saludos

                • Avatar-3 ilen 18/11/2009

                  PERO PARA que es la referencia?, es para cambiar el valor del objeto original... y esta a la vez en memoria?

                  • Avatar-10 Crysfel 18/11/2009

                    Hola ilen. Este concepto lo debemos tener claro cuando escribimos código, ya que si no lo conocemos podríamos estar manipulando el mismo objeto sin saberlo y tendríamos errores "extraños".

                    • Avatar-5 Claudio Madrid G. 22/03/2010

                      Esto de la consola, no funciona en IE? hay alguna manera ?

                      • Avatar-10 micayael 24/08/2010

                        Hola Crysfel Estuve mirando esto y veo solo una diferencia en el código. a = {var1: 1} b = a Ambos son el mismo objeto pero si vuelvo a asignarle a "b" otro objeto se vuelven diferentes. sería esto? o a que te refieres con: Es importante mencionar que en JavaScript las referencias sólo apuntan a objetos en memoria y no a otras referencias como el lenguaje C/C++.

                        • Avatar-12 Crysfel 25/08/2010

                          Exactamente, a eso me refiero, si asignas un nuevo objeto a una variable la referencia sería hacia el nuevo objeto.

                          • Avatar-5 micayael 30/08/2010

                            Genial. Muchas gracias por la aclaración.

                            • Avatar-3 Hector Rubio 02/10/2010

                              Le felicito por este pequeño, pero gran curso inductivo, pero tengo un pequeño detalle; ¿es necesariamente obligado utiliar el FireFox?, estoy enteramente adaptado a Internet Explorer desde sus inicios y en verdad no me llama la atención instalar el FireFox, y por supuesto que las lineas de codigo: console.debug no son interpretadas por IE, para este caso ¿como serian esas sentencias?, o ¿existe alguna herramienta debug para IE, que no sea la que ya trae preinstalada?

                              • Avatar-2 Hector Rubio 02/10/2010

                                He aqui mi duda sobre referencias: ¿cual es el objetivo de usar referencias?, puesto que si ya declaras el objeto y esté se encuentra en memoria, ¿no es mas optimo trabajar con dicho objeto unico, en vez de redundar con un grupo de objetos para un mismo fin?, digo por que a lo mejor esto evitaria escribir codigo redundante que a la larga ocupan espacio incecesario cuando la programacion se hace extensa. Gracias

                                • Avatar-7 Hector I. Rubio A. 04/10/2010

                                  Saludos Crysfel; Ante todo te felicito por tener ese talento de querer compartir tus conocimientos de seguro te reventira en mayor conocimiento y dominio de las TIC. Tengo una pregunta mas; Hace aproximadamente 4 dias atras realice un par de preguntas y no vi tus respuestas, ¿cual es o fue la razon?, de hecho ni siquiera estan las preguntas. Gracias

                                  • Avatar-6 Crysfel 04/10/2010

                                    Lo que sucede es que no había entrado al blog estos ultimos días y por lo tanto tus preguntas no estaban publicadas, no es que se borren ni nada por el estilo. Saludos

                                    • Avatar-1 Crysfel 04/10/2010

                                      Es necesario conocer el concepto para evitar errores en nuestro código, el uso de referencias es algo realmente práctico y muy útil, imagina el siguiente escenario: Tienes un arreglo de varios elementos, luego quieres modificar algunos solamente, lo que haces es buscar el elemento, obtener una referencia del elemento en el arreglo y luego si modificas esa referencia automáticamente se modificará el que tenías en el arreglo, de esta manera ya no tienes que insertar nuevamente el elemento que habías sacado. Este es un ejemplo my sencillo, pero lo mismo aplica para estructuras más complejas como árboles, grafos, etc. Saludos

                                      • Avatar-1 Crysfel 04/10/2010

                                        En IE7 puedes usar "console.info", en mi experiencia te comento que te cambies a firefox para desarrollar, la verdad que tiene muchas ventajas sobre Internet Explorer. Saludos

                                        • Avatar-10 Hector I. Rubio A. 04/10/2010

                                          Saludos, muy amable de tu parte en verdad, aclarado el punto, es una buena perspectiva, con respecto a FireFox e IE, ¿pueden coexistir ambos navegadores en la Pc?, digo esto por mantener al maximo la optimización de recursos del pc, de manera de buscar agarrarle el gustico a FireFox. Gracias

                                          • Avatar-5 Alvao Jiménez 10/10/2010

                                            No hay ningún problema en instalar Firefox junto con IE. De hecho puedes instalar Chrome, Opera, Safari y otros más si así lo deseas. Todos son programas que permiten ver páginas web y cada uno tiene sus propias características que los hacen ser preferidos por cada persona. En mi caso, normalmente navego por Chrome y para desarrollo ocupo Firefox.

                                            • Avatar-1 Cristian R. 24/04/2011

                                              Hola Crysfel, tengo una duda, si yo tengo un objeto 'a' y después un objeto 'b' que hace referencia a 'a', entonces si 'a' apunta después a otro objeto, 'b' sigue haciendo referencia al primer objeto q apuntaba 'a'. Con los strings lo entiendo ya q sabía que se creaban nuevos strings al tratar de concatenar, pero no se si es lo mismo con los objetos.

                                              • Avatar-5 felipeP 09/06/2012

                                                Veo que soy el primero en ver este gran tuto en el 2012, espero no llegar tarde..., lo que si puedo decir es que es un muy buen tuto y que me ha servido hasta el momento como nunca, saludos desde colombia...

                                                • Avatar-6 andres 07/01/2015

                                                  como se haría una referencia de cierto tipo a null, es algo como en java seria: ClaseObjeto nombreVariable = null; muy bien tu tutorial, gracias

                                                  • Avatar-9 Crysfel Villa 08/01/2015

                                                    Para asignar una variable a null lo haces semejante que en Java, la sintaxis en JavaScript es: var variable = null; Saludos

                                                  • Avatar-8 Luka 14/08/2019

                                                    Muy bueno el tutorial, me GUSTA javascript a todo nivel y veo que a ustedes tambien! Comparto errores basicos que a veces cometemos https://www.escuelajavascript.com/top-10-errores-de-javascript-en-mas-de-1000-proyectos/

                                                    Instructor del curso

                                                    Crysfel3

                                                    Autor: Crysfel Villa

                                                    Es ingeniero de software con más de 7 años de experiencia en desarrollo web.

                                                    Descarga Código Fuente

                                                    Regístrate a este curso

                                                    Este tutorial pertenece al curso Aprendiendo Ext JS 3, revisa todos los tutoriales que tenemos en este mismo curso ya que están en secuencia y van de lo más sencillo a lo más complicado.

                                                    Tendrás acceso a descargar los videos, códigos y material adicional.

                                                    Podrás resolver los ejercicios incluidos en el curso así como los Quizzes.

                                                    Llevarás un registro de tu avance.