Foros del Web » Programando para Internet » Javascript »

¿como crear un objeto que no sea propiedad del objeto window?

Estas en el tema de ¿como crear un objeto que no sea propiedad del objeto window? en el foro de Javascript en Foros del Web. Estaba leyendo sobre this, apply y call tratando de aprender un poco de javascript. Y veo que todos los objetos que creamos son propiedades de ...
  #1 (permalink)  
Antiguo 13/05/2014, 21:44
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
¿como crear un objeto que no sea propiedad del objeto window?

Estaba leyendo sobre this, apply y call tratando de aprender un poco de javascript.
Y veo que todos los objetos que creamos son propiedades de window.

¿Esto es asi o podemos crear objetos que no sean propiedades del window?
¿Todo lo que creemos estará por debajo de window?
¿Se puede separar el contexto global o crear contextos globales para evitar repetir el de nombre de variables por ejemplo?

Código Javascript:
Ver original
  1. var obj = {};
  2. window.obj; //Object {}
  3.  
  4. var x = function (){};
  5. var y = new x();
  6. window.y; //x {}

Desde ya muchas gracias

Última edición por cristian_cena; 13/05/2014 a las 21:53
  #2 (permalink)  
Antiguo 14/05/2014, 01:02
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: ¿como crear un objeto que no sea propiedad del objeto window?

Hola:

Si lo que declaras es global será parte de window. Para evitar repetir nombres de variales, puedes crear "contextos" propios, que también cuelgan debajo de window. Por ejemplo

Código Javascript:
Ver original
  1. var contexto1 = {};
  2. contexto1.a = 11;
  3. var contexto2 = {};
  4. contexto2.a = 22;

Tendrías entonces window.contexto1.a y window.contexto2.a como variables distintas. Por supuesto, en cada contexto puedes crear todas las variables y funciones que quieras

Código Javascript:
Ver original
  1. var contexto1 = {};
  2. contexto1.a = 11;
  3. contexto1.b = 22;
  4. contexto1.suma = function (a,b) {....}
  5. ....


Esta es la técnica habitual para evitar conflictos de variables. jQuery, por ejemplo, define el contexto/objeto $ que cuelga de window.$

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 14/05/2014, 07:01
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: ¿como crear un objeto que no sea propiedad del objeto window?

Cita:
Iniciado por cristian_cena Ver Mensaje
Estaba leyendo sobre this, apply y call tratando de aprender un poco de javascript.
Y veo que todos los objetos que creamos son propiedades de window.

¿Esto es asi o podemos crear objetos que no sean propiedades del window?
Puedes crear funciones,variables y objetos que no existan en window.Ésta es una de las varias utilidades de las funciones autoinvocadas:
Código Javascript:
Ver original
  1. (function(){
  2.     var v='hola';
  3.     setTimeout(function(){alert(v);},3000);
  4.     var n={};
  5.    
  6. })();
  #4 (permalink)  
Antiguo 14/05/2014, 07:33
Avatar de jp91  
Fecha de Ingreso: mayo-2014
Mensajes: 94
Antigüedad: 10 años
Puntos: 11
Respuesta: ¿como crear un objeto que no sea propiedad del objeto window?

"This" es un puntero cambiante segun lo llamemos.
Código Javascript:
Ver original
  1. function algo (){
  2. console.log(this.propiedad)
  3. };
  4. var objeto = {
  5. propiedad:"rojo",
  6. metodo:algo
  7. };
Llamamos al metodo objeto.metodo() a que apuntara "this" en la funcion algo?
Como dice en unas de la respuesta de arriba, pero el motivo de eso es que como nos dice el
creados de js el problema en js es el ambito global y sus variables globales, para eso una de sus soluciones es crear un nombre global para todo.Ejemplo:
Código Javascript:
Ver original
  1. var global = global || {};
  2. //constante
  3. global.PI = 3.141592;
  4. //metodo
  5. global.calcularAlgo =  function (){};
__________________
OOoo Como hacer ooOO
juegos con Html5.
  #5 (permalink)  
Antiguo 25/05/2014, 14:09
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: ¿como crear un objeto que no sea propiedad del objeto window?

Muchas gracias a todos por sus respuestas.

Aporto dos enlaces que me ayudaron a entender el tema:
Funciones Autoejecutables en Javascript
Namespacing en Javascript

Saludos!
  #6 (permalink)  
Antiguo 25/05/2014, 15:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: ¿como crear un objeto que no sea propiedad del objeto window?

Con CLOSURES es posible tambien ya que el contexto de las funciones internas no es accesible para el objeto window

Código Javascript:
Ver original
  1. <script>
  2. // Puedes crear funciones,variables y objetos que no existan en window.
  3. // Ésta es una de las varias utilidades de los CLOSURES:
  4.  
  5. function saludador(nombre)
  6. {    
  7.     saludo = 'Hola';
  8.     return function(apellido)
  9.     {  
  10.         return function(segundo_apellido)
  11.         {
  12.             return saludo +' '+ nombre +' '+apellido+' '+segundo_apellido;
  13.         }      
  14.     }
  15.    
  16. };
  17.  
  18. var saludarJuan = saludador('Juan');
  19. var saludarJuanPerez = saludarJuan('Perez');
  20. document.write(saludarJuanPerez('Garcia'));
  21.  
  22. console.log(window['saludo']); // Hola => global
  23. console.log(window['nombre']); // undefined
  24. console.log(window['apellido']); // undefined
  25. console.log(window['segundo_apellido']); // undefined
  26. </script>
__________________
Salu2!

Última edición por Italico76; 25/05/2014 a las 20:11

Etiquetas: objeto, propiedad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:09.