Aplicar () Definição do método
O método Aplicar () da função e o método de chamada têm a mesma função, mas a diferença é que os parâmetros recebidos são diferentes.
O método Aplicar () recebe dois parâmetros, um é um objeto e o outro é uma matriz de parâmetros.
Aplicar () função
1. Usado para estender o escopo da função
Exemplo:
var color = 'vermelho'; var o = {color: 'blue'}; função dizColor () {console.log (this.color);} saycolor (); // "vermelho" saycolor.apply (o); // "azul"Aqui, a função está dinamicamente ligada ao objeto O através do método apply (). Neste momento, isso aponta para o objeto O e obtém o resultado "azul".
2. Os objetos não precisam ter nenhum relacionamento de acoplamento com os métodos.
Vamos dar um exemplo de acoplamento abaixo para ver como resolver esse acoplamento aplicando.
var color = 'vermelho'; var o = {color: 'blue'}; função dizColor () {console.log (this.color);} o.saycolor = saycolor; o.saycolor (); // "azul"Aqui, a função é colocada pela primeira vez no objeto O, e o objeto e o método são acoplados de perto, e a chamada do método deve passar pelo objeto o.
Não é tão flexível quanto o uso de métodos Aplicar () e Call ().
Refator o código acima para obter o código no exemplo anterior.
var color = 'vermelho'; var o = {color: 'blue'}; função dizColor () {console.log (this.color);} saycolor (); // "vermelho" saycolor.apply (o); // "azul"Não existe um método vinculado ao objeto aqui, mas quando for necessário usá -lo, use o método Aplicar ou chamar da função para ligá -lo dinamicamente.
Não há acoplamento entre objetos e métodos. Aqui também pode ser feito através do método bind () fornecido pelo ES5.
3. Implementar a transferência de parâmetros de parâmetro variável
A seguinte função para calcular o valor médio de qualquer número
média (,,); média (); média (,,,,,); média (,,,,,); média (,,,,,,,,);););
A função média é um exemplo chamado parâmetro mutável ou função de elemento mutável (o número de elementos de uma função refere -se ao número desejado de parâmetros).
Obviamente, essa função também pode ser escrita na forma de uma matriz de recebimento.
médioFarray ([,,]); médiaofarray ([]); médiaofarray ([,,,,,,,]);
As funções que usam parâmetros variáveis são mais concisas e elegantes. As funções de parâmetros variáveis têm sintaxe conveniente, pelo menos permitindo que o chamador saiba com antecedência quantos parâmetros são fornecidos.
Se eu tiver uma matriz como esta
var scores = getAllScores ();
Como calcular o valor médio usando a função média?
1. Versão da função de parâmetro variável.
No momento, ele pode ser usado em conjunto com o método APLIC (). Como a função não usa referência a essa variável, passamos um nulo para o primeiro parâmetro. O código é o seguinte:
var scores = getAllScores (); média.Apply (nulo, pontuações);
2. Os parâmetros diretos estão na forma de matriz
Aqui você pode passar diretamente os parâmetros da matriz.
var scores = getAllScores (); médiaofarray (pontuações);
Pessoalmente, acho que as duas formas acima são boas, mas a segunda é mais simples. Saiba mais sobre um método, que pode ser facilmente tratado ao encontrar funções escritas por outras pessoas sem refatorar o código. Este benefício é ainda mais.
4. Implemente a transferência de valor de métodos de parâmetros variáveis
Exemplo: o objeto de buffer contém um método de anexo de parâmetro mutável, que é adicionado à matriz de estado dentro da função.
var buffer = {state: [], append: function () {for (var i =, n = argumentos.Length; i <n; i ++) {this.state.push (argumentos [i]);}}};Neste momento, o método Apênd pode aceitar qualquer parâmetros múltiplos.
buffer.append ('hello,'); buffer.append ('firtname', '', 'lastName', '!'); buffer.append ('newline');Forma como
buffer.append (arg1, arg2, arg3, ...)
Com este parâmetro do método Apply, podemos especificar uma matriz computável para chamar o método Apênd.
buffer.append.apply (buffer, getInputStrings ());
Nota: O buffer aqui é importante. Se um objeto diferente for aprovado, o método Apênd tentará modificar a propriedade do estado do objeto errado.
dica
• Use o método Aplicar para especificar uma matriz de parâmetro computável para chamar uma função com parâmetros mutáveis
• Use o primeiro parâmetro do método de aplicação para fornecer um receptor para o método de parâmetro variável
Apêndice 1
função média
função média () {var args = [].Função médiaOFarray
função médiaofarray (arr) {var sum = arr.reduce (function (prev, curs) {return prept+cur;}); retornar parseint (sum/arr.length);}Método ES5 Bind ()
Este método cria uma instância de uma função cujo valor está ligado ao valor passado para a função bind ().
Por exemplo
var color = 'vermelho'; var o = {color: 'blue'}; função dizColor () {console.log (this.color);} varsaycolor = saycolor.bind (o); osaycolor (); // "azul"Compatível com versões mais baixas, consulte a versão a seguir:
if (! function.prototype.bind) {function.prototype.bind = function (othis) {if (typeof this! == 'function') {// coisa mais próxima possível do ecmascript // interno iscaltable functionWrowTrowLow 'typeError (' function.prototype.bind - o que está tentando ser chamado ( ), ftobind = this, fnop = function () {}, fbound = function () {return ftobind.apply (esta instância de fnop? this: othis, aargs.concat (Array.protyType.slice.Call (argumentos));}; if (this.Protype) { this.prototype; } fbound.prototype = new FNOP (); retorna fbound;};}