Foros del Web » Programando para Internet » Javascript »

POO , emulando strong data typing (problema)

Estas en el tema de POO , emulando strong data typing (problema) en el foro de Javascript en Foros del Web. B uenas caballeros! Estoy tratando e emular el strong Typing en las propiedades de los prototipos que estoy usando para un proyecto totalmente enfocado a ...
  #1 (permalink)  
Antiguo 20/05/2013, 14:11
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta POO , emulando strong data typing (problema)

Buenas caballeros!


Estoy tratando e emular el strong Typing en las propiedades de los prototipos que estoy usando para un proyecto totalmente enfocado a Objectos con Javascript.

Por ejemplo cuando en el constructor de un prototipo , defino varios tipos de propiedades que van a ser usadas para ese prototipo y para las herencias :

Código Javascript:
Ver original
  1. fucntion PersonaPrototype(edad, nombre){
  2.  
  3. this.Edad = new Number(edad);
  4. this.Nombre = new String(nombre);
  5. }


Pero tengo un problema a la hora de definir ciertos tipos relacionados con el DOOM del documento, por ejemplo, si quiero que el constructor, obtenga el id de un nodo (el id es un string) hago lo siguiente :

Código Javascript:
Ver original
  1. function PersonaPrototype(){
  2.  
  3. this.NodoPadre = new String(document.getElementById('ejemploID'));
  4. }


Si hago esto, el debugger me devuelve valor : undefined , ¿por que? que tipo de dato aplico a los elementos del doom, como por ejemplo : this.Nodo = new String(createElement(div)); ?
  #2 (permalink)  
Antiguo 20/05/2013, 14:26
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: POO , emulando strong data typing (problema)

Buenas,

Si quieres obtener el id, tienes que acceder al atributo id:

Código Javascript:
Ver original
  1. function PersonaPrototype(){
  2.  
  3. this.NodoPadre = document.getElementById('ejemploID').id;
  4. }

Un saludo.
  #3 (permalink)  
Antiguo 20/05/2013, 14:29
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: POO , emulando strong data typing (problema)

Código Javascript:
Ver original
  1. function PersonaPrototype(){
  2.  
  3. this.NodoPadre = new String(document.getElementById('ejemploID'));
  4. }

Con esto estas obteniendo el elemento No el id

Para obtener el id as esto

Código Javascript:
Ver original
  1. this.NodoPadre = new String(document.getElementById('ejemploID').id);

Saludos
  #4 (permalink)  
Antiguo 20/05/2013, 14:34
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: POO , emulando strong data typing (problema)

La forma que te dice alexg88 es correcta
La propiedad id devuelve un valor tipo string

Con new String lo que haces es crear un objeto String su tipo es object

No se que tanto conozcas javascript pero puedes usar indiferentemente

el tipo primitivo string y objetos String, cuando javascript ve que un tipo primitivo esta siendo usado como objeto lo convierte a objeto y tambien hace lo contrario

Si usas al constructor string como una funcion lo que hace es convertir su parametro a cadena

Saludos
  #5 (permalink)  
Antiguo 20/05/2013, 14:55
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: POO , emulando strong data typing (problema)

El tipado poco y nada tiene que ver con objetos.

De cualquier manera, si estás interesado en tener algo como tipado estático y fuerte, te diría que revises alguno de los tantos lenguajes que compilan a JS (Dart o TypeScript tienen algo de eso).

PD: Es DOM (de Document Object Model) y no DOOM :)
__________________
blog | @aijoona
  #6 (permalink)  
Antiguo 20/05/2013, 15:24
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: POO , emulando strong data typing (problema)

He jugado mucho ultimamente al dota2, (por el fallo del doom xD), y en cuanto a tipado, bueno, si, javascript es un lenguaje no tipado, pero ami me interesa por el hehco de llevar mas a cuenta todo lo que hago con cada variable del prototipo (propiedades), y llevar mejor los bugs que tangan relacion con el tipo de dato que se esta usando.

hackjose, si es verdad, en el caso de obtener la id es la forma que decis vosotros, pero sigo sin poder guadar en un string el crear un nuevo elemento y guardarlo, si aplico sizeOf me devuelve undefined como dije en mi primer post.
  #7 (permalink)  
Antiguo 20/05/2013, 16:40
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: POO , emulando strong data typing (problema)

sizeof no existe en javascript debes usar length

size existe en jQuery pero ya se declaro obsoleto

Para crear un elemento debes usar createElement
para atributos createAttribute
Para crear comentarios createComment
Para crear texto createTextNode

Despues debes ingresar por ejemplo el texto creado en el elemento creado con appendChild o insertBefore

Para poner el atributo debes usar setAttributeNode

Tambien podrias hacer algo mas facil como

var elemento = "<div>textotexto</div>";
Despues si deseas insertar el nuevo elemento div en otro elemento X lo puedes hacer con innerHTML

X.innerHTML = elemento;

Si solo quieres insertar texto en el elemento X puedes usar innerText(No sirve en firefox) o textContent(Sirve en todos menos IE8 y anteriores)

X.textContent = "texto";

Saludos
  #8 (permalink)  
Antiguo 20/05/2013, 17:42
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: POO , emulando strong data typing (problema)

Se como crear elementos, gracias, y no, no quiero implementar un texto dentro de un nodo o elemento, lo que busco es simple, saber que distintos tipos de datos se pueden usar para guardar determinada información del DOM en las propiedades miembro de un prototypo.


Ps. si "existe" SizeOf en javascript, biblioteca : CXT

Etiquetas: Ninguno
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 11:06.