Foros del Web » Programando para Internet » Javascript »

¿cómo invocar función original a la que he sobrecargado?

Estas en el tema de ¿cómo invocar función original a la que he sobrecargado? en el foro de Javascript en Foros del Web. Muy buenas, tengo una duda probablemente bastante tonta pero que sinceramente no tengo ni idea de como hacerlo en javascript. He sobrecargado la función alert ...
  #1 (permalink)  
Antiguo 31/03/2011, 10:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
¿cómo invocar función original a la que he sobrecargado?

Muy buenas, tengo una duda probablemente bastante tonta pero que sinceramente no tengo ni idea de como hacerlo en javascript.

He sobrecargado la función alert para sustituirla por unos cuadros de alerta más vistosos de jquery, pero para un caso en particular tengo que llamar al alert original de javascript ¿sabéis cómo se hace?

Muchas gracias!!!
  #2 (permalink)  
Antiguo 31/03/2011, 10:56
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: ¿cómo invocar función original a la que he sobrecargado?

window.alert() y listo.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 01/04/2011, 00:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Respuesta: ¿cómo invocar función original a la que he sobrecargado?

Cita:
Iniciado por maycolalvarez Ver Mensaje
window.alert() y listo.
Fue lo primero que probé y no, llama de nuevo a la sobrecargada.

Gracias igualmente
  #4 (permalink)  
Antiguo 01/04/2011, 08:13
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: ¿cómo invocar función original a la que he sobrecargado?

Seguramente lo que hiciste es sobreescribir la función en lugar de "sobrecargarla". Intentá algo así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
window.alert = function(native) {
 return function(
m,scope) {
    if(!
scope)
        
native(m);
    else
        
scope.innerHTML=m;
    
 }
}(
window.alert);
onload=function(){
    
alert('hola',document.body);
    
alert('pp');
    
alert('chau',document.body);
    
alert(':)');
}
</script>
</head>

<body>
</body>
</html> 
  #5 (permalink)  
Antiguo 07/04/2011, 00:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 19
Antigüedad: 16 años
Puntos: 0
Respuesta: ¿cómo invocar función original a la que he sobrecargado?

Cita:
Iniciado por Panino5001 Ver Mensaje
Seguramente lo que hiciste es sobreescribir la función en lugar de "sobrecargarla". Intentá algo así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
window.alert = function(native) {
 return function(
m,scope) {
    if(!
scope)
        
native(m);
    else
        
scope.innerHTML=m;
    
 }
}(
window.alert);
onload=function(){
    
alert('hola',document.body);
    
alert('pp');
    
alert('chau',document.body);
    
alert(':)');
}
</script>
</head>

<body>
</body>
</html> 
En efecto parece que no puedo sobrecargarla, sólo sobreescribirla. Muchas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 07/04/2011, 00:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: ¿cómo invocar función original a la que he sobrecargado?

Pero si te fijás en el código que te mostré, basado en una clausura, podés hacer justo lo que necesitás. Sólo tenés que adaptarlo

Etiquetas: invocar, original
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 06:06.