Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/04/2016, 18:39
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Llamar a funcion dentro de otra funcion

La forma en la que intentas hacer eso es incorrecta. Estás tratando a la función "alert1" como si fuera constructora y poseyera el método "subalerta1_2" cuando lo único que contiene como conjunto de instrucciones consiste en la declaración de una variable a la cual se le asigna un objeto literal, además de la llamada a una función que es declarada más abajo.

Para tratar a la primera función como constructora, necesitas instanciarla, para lo cual debes utilizar la palabra reservada new; exactamente como cuando instancias una clase en Java o PHP. Existe otra forma, pero para efectos de la explicación, solo mencionaré esta. Y ya que la función "alerta1" será constructora, para asignarle atributos y métodos (para que así puedas acceder a ellos mediante la notación por puntos, como lo intentaste), necesitarás utilizar la palabra reservada this, misma que hará referencia a la función constructora:
Código Javascript:
Ver original
  1. function alerta1(){
  2.     this.json1 = {
  3.         nombre: "json1",
  4.         apellido: "apellido1",
  5.         edad: 20
  6.     };
  7.  
  8.     this.subalerta1_2 = function(edad){
  9.         alert("Tu edad al cuadrado: " + (parseInt(edad) * 2));
  10.     };
  11.  
  12.     this.subalerta1_2(this.json1.edad);
  13. }
  14.  
  15. function alerta2(){
  16.     var a1 = new alerta1();
  17.     a1.subalerta1_2(25);
  18.     a1.json1.edad = 35;
  19.     a1.subalerta1_2(a1.json1.edad);
  20. }
  21.  
  22. alerta2();

El primer mensaje de alerta mostrará el mensaje "Tu edad al cuadrado es 40", puesto que, al instanciar a la función "alerta1", se ejecuta el código que esta posee, en el cual se encuentra una llamada al método "subalerta1_2". Enseguida, se mostrará el mensaje "Tu edad al cuadrado es 25", puesto que, luego de la instanciación, se ejecuta otra llamada al método "subalerta1_2", pero esta vez desde la función "alerta2", en la cual se le pasa el valor 25 como argumento. Finalmente, luego de modificar el valor del atributo del objeto "json1" de nombre "edad", mismo que es atributo de la función "alerta1", se ejecutará una nueva llamada al método "subalerta1_2", pero con el valor actualizado de la edad como argumento, obteniendo el mensaje "Tu edad al cuadrado es 70" como tercer y último mensaje de alerta.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand