Foros del Web » Programando para Internet » Javascript »

Esta estructura de datos es un objeto?

Estas en el tema de Esta estructura de datos es un objeto? en el foro de Javascript en Foros del Web. Buenas tardes, quiero agrupar código y funcionalidades de un código que se me hizo muy grande. Leyendo llegue a ver estructuras de esta forma: @import ...
  #1 (permalink)  
Antiguo 09/09/2011, 12:39
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Pregunta Esta estructura de datos es un objeto?

Buenas tardes,
quiero agrupar código y funcionalidades de un código que se me hizo muy grande. Leyendo llegue a ver estructuras de esta forma:

Código Javascript:
Ver original
  1. var Algo = {
  2.     dato1: "Hola",
  3.     alertar: function() {
  4.         alert( dato1 );
  5.     },
  6. }
  7.  
  8. Algo.alertar();

ésto seria un objeto? ya que en ningun lado hago un new Algo; o algo similar..

Por otra partes, porque no me funciona el alert con el valor de la variable dato1 en ese ejemplo?

Gracias!
  #2 (permalink)  
Antiguo 09/09/2011, 14:04
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Esta estructura de datos es un objeto?

buenas,
ese tipo de estructura eventualmente es un objeto. concretamente, un objeto literal. un objeto también se puede crear con los constructores (new Constructor), pero dicho constructor es una función. sus instancias pertenecen a ese constructor. en cambio, un objeto literal siempre es una instancia del constructor Object.

Código:
// constructor ;
function Const(){
this.method = function(){return 'method';};
this.prop = 'prop';
}

var inst = new Const(),
literal = {method: function(){return 'method';},
prop: 'prop'
};

console.log(inst.constructor == Const); // true;
console.log(literal.constructor == Const); // false;
console.log(literal.constructor == Object); // true;
Cita:
Por otra partes, porque no me funciona el alert con el valor de la variable dato1 en ese ejemplo?
por dos factores. primero, en realidad no estas creando una variable, sino una propiedad de un objeto. y segundo, la función es un método del objeto. los métodos pueden accesar a las propiedades del objeto al que pertenecen pero es necesario hacer referencia a ellos debido al contexto en que estan declarados. es decir, la función hace referencia al objeto contenedor mediante el keyword this y a partir de ahí tiene acceso a sus propiedades y demás métodos.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 09/09/2011, 14:59
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Esta estructura de datos es un objeto?

Muchas Gracias zerokilled,
Este año aprendi la POO en Java y ahora la estaba implementando en PHP. Pero no me quedaba del todo claro como funcionaba en Javascript.

Tengo unas dudas más.

Tengo mucho codigo javascript programado usando JQuery. Basicamente son muchos eventos asignados a distintos tipos de elementos HTML, <a> <li> <div> etc y a su vez, estos eventos llaman a funciones en algunos casos:

Código Javascript:
Ver original
  1. $('.item').click(function(e){
  2.         e.preventDefault();
  3.         change_color( $(this).attr('rel') );
  4.     });
  5.  
  6. function change_color(c) {
  7. //
  8. }

Me convendría agrupar estos eventos en un objeto literal segun su funcionalidad ? En este momento mi codigo tiene muchos bloques de este tipo que te deje en el ejemplo.


Agrego algo más:
Que sentido tiene crear un objeto literal cuando no se van a poder crear instancias del mismo ? sería agrupar código y funcionalidad? o me estoy equivocando..

Gracias!

Última edición por McBlink; 09/09/2011 a las 15:07
  #4 (permalink)  
Antiguo 09/09/2011, 15:18
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Esta estructura de datos es un objeto?

se dice que es buena práctica organizar el código en un namespace por dos motivos principales: evitar que otro código invada accidentalmente tu script, y para mejorar el mantenimiento. una forma de implementar el namespace es mediante un objeto. por tanto, sí, es conveniente agruparlos. nota: en javascript, como tal no existe el namespace como en los lenguajes basados en clases.

sobre la última pregunta, en mi opinión personal, es más un estilo de organización o patrones de programación. en ese sentido, se puede usar para agrupar funcionalidad.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: estructura
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 08:18.