Referencias en JavaScript Más videos
Descripción del tema
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.
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.
26Comentarios
muy bueno tus tutoriales sigue asi ojala sigas poniendo los demas temas que faltan saludos
Gracias por las lecciones saludos
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
Así es, realmente no importa como la manera como se declare, es exactamente lo mismo, cuestión de gustos.
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.
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
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
PERO PARA que es la referencia?, es para cambiar el valor del objeto original... y esta a la vez en memoria?
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".
Esto de la consola, no funciona en IE? hay alguna manera ?
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++.
Exactamente, a eso me refiero, si asignas un nuevo objeto a una variable la referencia sería hacia el nuevo objeto.
Genial. Muchas gracias por la aclaración.
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?
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
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
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
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
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
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
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.
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.
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...
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
Para asignar una variable a null lo haces semejante que en Java, la sintaxis en JavaScript es: var variable = null; Saludos
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/