1. Llamadora
Devuelve una referencia a la función que llama a la función actual.
functionName.caller
El objeto FunctionName es el nombre de la función ejecutada.
ilustrar
Para las funciones, el atributo de llamadas solo se define cuando se ejecuta la función. Si la función se llama por el nivel superior de un programa JavaScript, entonces la persona que llama contiene nulo.
El siguiente ejemplo ilustra el uso del atributo de llamadas:
La copia del código es la siguiente:
función nallerDemo () {
if (arguments.caller) {
var a = callerDemo.caller.ToString ();
alerta (a);
} demás {
alerta ("Esta es una función superior");
}
}
función handlecaller () {
callerDemo ();
}
handlecaller ();
función calleedemo () {
alerta (argumentos.callee);
}
Calleedemo ();
2. Callee
Devuelve el objeto de función que se está ejecutando, es decir, el cuerpo del objeto de función especificado.
[función.] Argumentos.callee
El parámetro de función opcional es el nombre del objeto de función que se ejecuta actualmente.
ilustrar
El valor inicial de la propiedad Callee es el objeto de función que se está ejecutando.
La propiedad de Callee es un miembro del objeto de argumentos, que representa una referencia al objeto de la función en sí, que es propicio para la recursión de funciones anónimas o para garantizar la encapsulación de la función. Por ejemplo, el cálculo recursivo de la suma de números naturales de 1 a N en el siguiente ejemplo. Esta propiedad solo está disponible cuando se está ejecutando la función relevante. También es importante tener en cuenta que Callee tiene el atributo de longitud, que a veces es mejor para la verificación. argumentos. La longitud es la longitud del parámetro real, y argumentos.callee.length es la longitud del parámetro formal. Esto se puede usar para determinar si la longitud del parámetro formal es consistente con la longitud del parámetro real al llamar.
Ejemplo
La copia del código es la siguiente:
// Callee puede imprimirse
función calleedemo () {
alerta (argumentos.callee);
}
// utilizado para verificar los parámetros
función calleelengthDemo (arg1, arg2) {
if (arguments.length == arguments.callee.length) {
Window.alert ("Verifique que los parámetros formales y los parámetros reales sean correctos!");
devolver;
} demás {
alerta ("Longitud real del argumento:" +argumentos.length);
alerta ("Longitud del tamaño:" +argumentos.callee.length);
}
}
// Cálculo recursivo
var sum = function (n) {
if (n <= 0)
regresar 1;
demás
retorno n + argumentos.callee (n - 1)
}
Una función recursiva más general:
La copia del código es la siguiente:
var sum = function (n) {
if (1 == n) return 1;
el más return n + sum (n-1);
Cuando se llama: Alerta (suma (100));
La función contiene una referencia a la suma misma. El nombre de la función es solo un nombre de variable. Llamar a la suma dentro de la función es equivalente a la llamada
Una variable global no puede reflejarse bien en la llamada en sí, y el uso de Callee será un mejor método en este momento.