Foros del Web » Programando para Internet » Javascript »

Crear funcion con formato propio

Estas en el tema de Crear funcion con formato propio en el foro de Javascript en Foros del Web. Bueno, veamos como nos va con esto, solo es una idea curiosa, no busco que nadie me pegue por preguntar: Normalmente la forma de implementar ...
  #1 (permalink)  
Antiguo 05/02/2009, 16:21
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
Pregunta Crear funcion con formato propio

Bueno, veamos como nos va con esto, solo es una idea curiosa, no busco que nadie me pegue por preguntar:

Normalmente la forma de implementar funciones puede ser esta:
Numero = Potencia(Numero,5);

Pero, existe alguna manera de lograr hacerlo así:
Numero.Potencia(10);

Como si fuese parte del lenguaje? casi Imposible?
  #2 (permalink)  
Antiguo 05/02/2009, 16:36
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear funcion con formato propio

Si con Numero te refieres a un número, es decir, a poder escribir esto:

Código javascript:
Ver original
  1. 5.Potencia(10)

entonces no se puede (bueno, se puede pero no así tal cual (ver nota abajo *)). Pero si te refieres a una llamarlo sobre una variable de tipo número, entonces sí, es posible.

Código javascript:
Ver original
  1. Number.prototype.elevadoa = function(x) {
  2.     var a= 1;
  3.     while((x--) > 0) { a *= this; };
  4.     return a;
  5. };
  6.  
  7. var numero = 4;
  8. alert( numero.elevadoa(3) );




(*) No es posible por un tema de sintaxis. El problema es que algo como 7.elevadoa(3) da un error porque ese punto se confunde con el punto decimal de algo como 7.2
Sin embargo, podrías hacer algo como:
Código javascript:
Ver original
  1. alert( (4).elevadoa(3) );

Nota: No garantizo que esto último funcione en cualquier versión y/o VM de Javascript.
  #3 (permalink)  
Antiguo 05/02/2009, 16:59
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
De acuerdo Respuesta: Crear funcion con formato propio

Super!, sabia que mi idea no podía estar tan mal después de todo...

Realmente te agradezco toda la colaboración de este día.

Pero tengo dudas... Por que funciona?

Number: no existe en ningún lado...
y he visto esto, pero no se que función cumple .prototype., se que javascript se basa en prototipos(he imagino que prototype hace parte del lenguaje). Pero que hace...

Que pasa si en vez de numero, lo cambio por un string?
  #4 (permalink)  
Antiguo 05/02/2009, 17:15
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear funcion con formato propio

En Javascript todo son objetos. Number es el objeto base del que heredan todos los números. Igual que String es el objeto base del que heredan todas las cadenas.

Al hacer Number.prototipe.elevadoa = function() { ... } lo que estamos haciendo es asignar un elemento en el prototipo de Number, de modo que automáticamente es accesible por todos los números (que han heredado de Number).


Como hemos hecho la extensión a Number, y no a String, entonces si intentas hacer:

Código javascript:
Ver original
  1. var a = "hola";
  2. a.elevadoa(3);
no va a funcionar, porque te va a decir que a no tiene esa propiedad. De todos modos, tampoco tiene mucho sentido intentar calcular la potencia de algo que no es un número, ¿no?
  #5 (permalink)  
Antiguo 06/02/2009, 10:24
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: Crear funcion con formato propio

Estuve probando el script, pero el solo me devuelve el resultado mas no me remplaza el valor de la variable...
Es decir:

Number.prototype.elevadoa = function(x) {
var a= 1;
while((x--) > 0) {a *= this;};
return a;
};

var numero = 4;
alert('1:'+numero.elevadoa(3) ); esto me da 64
numero.elevadoa(3);
alert('2:'+numero); //Pero esto sigue siendo 4
Se puede remplazar el dato?
  #6 (permalink)  
Antiguo 06/02/2009, 11:47
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear funcion con formato propio

No.

Tienes que hacer numero = numero.elevadoa(3);

Es exactamente igual que cuando haces:
Código javascript:
Ver original
  1. var cadena = "hola";
  2. alert(cadena);
  3. cadena.replace(/a/,"o");
  4. alert(cadena);
  5. cadena = cadena.replace(/a/,"o");
  6. alert(cadena);
  #7 (permalink)  
Antiguo 06/02/2009, 12:55
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
De acuerdo Respuesta: Crear funcion con formato propio

Si, eso pensé... Bueno, lastima! Fue lo único que hizo falta.
Pero, bueno... de todas formas muchas gracias por tu colaboración, todo ha sido muy productivo para mi. Pronto publicare la versión 1.0 de mi librería(realmente no sería mía, si no de todos mis colaboradores) y espero que tu seas uno de los cuales le de el visto bueno y claro!, critiques todo lo malo... que probablemente sea bastante. Pero por algo se comienza no.

Un saludo y muchas gracias. Creo que a mas tardar la tendré el lunes, no aspiro tardarme más de una semana en ello.
  #8 (permalink)  
Antiguo 06/02/2009, 14:26
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
De acuerdo Respuesta: Crear funcion con formato propio

Un saludo...
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 00:18.