Foros del Web » Programando para Internet » Javascript »

Sobrecarga de funciones

Estas en el tema de Sobrecarga de funciones en el foro de Javascript en Foros del Web. Existe esa posibilidad en JS ? Muchas gracias...
  #1 (permalink)  
Antiguo 27/04/2006, 08:33
 
Fecha de Ingreso: abril-2006
Mensajes: 14
Antigüedad: 18 años
Puntos: 0
Sobrecarga de funciones

Existe esa posibilidad en JS ?

Muchas gracias
  #2 (permalink)  
Antiguo 27/04/2006, 08:40
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola cocozz, bienvenido a los foros:

No recuerdo haber visto eso en javascript... Lo que si es fácil redefinir métodos... y tiene bastante flexiblidad... tal vez si nos das un ejemplo podríamos encontrar algún truco...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 01/05/2006, 16:13
 
Fecha de Ingreso: abril-2006
Mensajes: 14
Antigüedad: 18 años
Puntos: 0
Me he estado informando y al parecer no existe tal funcionalidad en JS
Una solución seria, pasar los argumentos a través de un array, y dentro de la misma función a través de un switch/if o cualquier sentencia condicional realizar X o Y según si tenemos más o menos argumentos...

Un saludete ( Gracias por la bievenida al foro)
  #4 (permalink)  
Antiguo 02/05/2006, 07:53
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
hola,

podriais explicarme a que se referiis con "sobrecarga de funciones", es que no lo entiendo. gracias

salud.os
  #5 (permalink)  
Antiguo 02/05/2006, 08:02
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola programeitor

Algunos lenguajes de programación permiten la sobrecarga de funciones, es decir, varias funciones con el mismo nombre. Se distinguen entre sí por el número de argumentos que se le pasan o por el tipo de dato de cada argumento. Te pongo un ejemplo en Delphi:
Código:
function IIf(Pregu: Boolean; Cad1,Cad2: String): String; overload;
function IIf(Pregu: Boolean; Num1,Num2: Integer): Integer; overload;
Cuando la llames, dependiendo de los argumentos se ejecutará una u otra.

Saludos,
  #6 (permalink)  
Antiguo 03/05/2006, 07:21
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
Ahh ya, creo comprender. Entonces se trata de funciones con el mismo nombre pero distintos argumentos... en javascript seria una funcion con un control de entrada que indique que es lo que va a hacer.

No hace mucho he estado probando a declarar "variables de funcion" dentro o fuera de ellas, que basicamente consiste en tratar la funcion como un objeto, esto es:

nombrefuncion.valor=x

Esto puede servir para suplantar a variables globales que han de estar en varias funciones haciendolas formar parte de la funcion que mas la represente. Tambien sirve para crear controles de funcion que han sido declarados fuera de ellas ,pues hay veces en que es nesesario crear un control de entrada, que normalmente se recurre a una variable global:

fun.control=true

function fun(){
if fun.control(){}
}

Algo para mi sin explicacion, es que estas variables de funcion no son las m¡smas que las declaradas dentro de la funcion:

fun.x="hola";
functionfun()
{
varx="adios";
window.status=fun.x+" "+x;
}


Bueno ,javierB. Gracias por contestar, .no se si esto sirve en algo al tema que estamos tratando, pero creo que da una idea.

salud.os



  #7 (permalink)  
Antiguo 03/05/2006, 08:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Sobre el número de argumentos podría simplemente usar un switch:

function x() {
switch (arguments.length) {
case 0: alert(arguments.length);
break;

case 1: alert(arguments.length);
break;

default: alert('sin definir');
break;
}
}
...


<body onload="x(); x(1); x(1,2,3)">

Pero me temo que el ejemplo de JavierB (¡Hola !) es más descriptivo...

Lo que sí es que se pueden usar métodos propios de objetos y/o redefinirlos

String.prototype.sort = function() {
t = this.split(""); t.sort(); return t.join("");
}

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 16:30.