Cada função contém duas propriedades: comprimento e protótipo
Comprimento: o número de parâmetros nomeados que a função atual deseja aceitar
Protótipo: é a maneira real de preservar toda a sua força
A cópia do código é a seguinte:
function SayName (nome) {
alerta (nome);
}
Função Sum (num1, num2) {
retornar num1 + num2;
}
função dizhi () {
alerta ("oi");
}
alert (SayName.length); // 1 número de parâmetros
alerta (sum.length); // 2 número de parâmetros: 2
alerta (Sayhi.Length); // 0 Nenhum parâmetros
Cada função contém dois métodos não herdados: Aplicar () e Call ()
Ambos os métodos chamam funções em um escopo específico, que é realmente igual a definir o valor desse objeto no corpo da função
Primeiro aplicativo () aceita dois parâmetros: um é o escopo da função em execução, e o outro é a matriz de parâmetros (pode ser uma instância da matriz ou um objeto de argumento)
A cópia do código é a seguinte:
Função Sum (num1, num2) {
retornar num1 + num2;
}
function Callsum1 (num1, num2) {
Retornar Sum.Apply (isto, argumentos); // Passa no objeto de argumentos
}
function Callsum2 (num1, num2) {
retornar soma.Apply (isto, [num1, num2]);
}
alerta (Callsum1 (10, 10)); // 20
alerta (Callsum2 (10, 20)); // 30
Em segundo lugar, o primeiro parâmetro do método de chamada não mudou. O que muda é que os outros parâmetros são passados por parâmetros e os parâmetros passados para a função precisam ser listados um por um.
A cópia do código é a seguinte:
Função Sum (num1, num2) {
retornar num1 + num2;
}
function Callsum (num1, num2) {
retorno soma.call (this, num1, num2);
}
alerta (Callsum (10, 200));
Quanto a qual método é mais conveniente, depende inteiramente de seus desejos. Se não houver parâmetros, será o mesmo que usar.
No entanto, a aparência dos métodos de aplicação e chamada definitivamente não é apenas como remover os parâmetros do casco.
Seu uso real está no escopo do qual as funções de extensão dependem.
A cópia do código é a seguinte:
window.color = "vermelho";
var o = {color: "azul"};
function dizColor () {
alerta (this.color);
}
SayColor (); // vermelho
saycolor.call (this); // vermelho
saycolor.call (janela); // vermelho
saycolor.call (o); // azul
A maior vantagem de usar o Apply and Call to Expands Scope é que não há necessidade de ter nenhum relacionamento de acoplamento com o método.
O ECMAScript5 também define um método: Bind (). Este método cria uma instância de uma função cujo valor estará ligado ao valor passado para a função de ligação
A cópia do código é a seguinte:
window.color = "vermelho";
var o = {color: "azul"};
function dizColor () {
alerta (this.color);
}
var bindfun = saycolor.bind (o);
bindfun (); // azul
O exposto acima é tudo sobre este artigo, espero que você possa gostar.