Existem duas propriedades especiais dentro da função: argumentos e isso. Os argumentos são um objeto de classe de matriz que contém todos os parâmetros passados.
Mas esse objeto também possui uma propriedade chamada Callee, que é um ponteiro de uma função que possui o objeto de argumentos.
Por favor, veja o exemplo clássico da função fatorial:
A cópia do código é a seguinte:
função fatorial (num) {
if (num <= 1) {
retornar 1;
} outro {
retornar num * fatorial (num - 1);
}
}
função fatorial (num) {
if (num <= 1) {
retornar 1;
} outro {
retornar num * argumentos.callee (num - 1);
}
}
Não há nada de errado em usar o primeiro método, mas o acoplamento é muito alto e não muito bom. Depois que o nome da função é alterado, o nome da função interno também deve ser alterado.
O segundo método é baixo, não importa como o nome da função é alterado, ele não afetará a execução da função.
Isso se refere ao objeto de ambiente no qual a função é executada, ou também pode ser considerado esse valor.
A cópia do código é a seguinte:
window.color = "vermelho";
var o = {color: "azul"};
function dizColor () {
alerta (this.color);
}
SayColor (); // vermelho
O.SayColor = SayColor;
o.saycolor (); // azul
O atributo chamador mantém uma referência à função que chama a função atual. Se a função atual for chamada no escopo global, seu valor será nulo
A cópia do código é a seguinte:
função outer () {
INTER ();
}
função interna () {
//alert(innter.caller) ;// O acoplamento é muito alto
alerta (argumentos.callee.caller);
}
exterior();
O exposto acima é todo o conteúdo das propriedades internas das funções JavaScript. Eu espero que você possa gostar