Sempre esqueça o uso dessas duas coisas e escreva -as para fazer um disco.
Suas funções são exatamente as mesmas, mas os parâmetros passados são diferentes
aplicar
Aplicar aceita dois parâmetros. O primeiro formula o apontar desse objeto no corpo da função, e o segundo é um conjunto com subscritos (o objeto pode ser percorrido). O método Apply passa os elementos neste conjunto como parâmetros para a função chamada:
var func = function (a, c, c) {alert ([a, b, c]); //−1,2,3] }func.apply(null, [1,2,3]);chamar
Os parâmetros passados na chamada não são fixados. O mesmo que aplicação é que o primeiro parâmetro também representa esse apontamento no corpo da função. Após o início do segundo parâmetro, cada parâmetro é passado para a função na sequência:
var func = function (a, b, c) {alert ([a, b, c]); //−1,2,3] }func.call(null, 1,2,3);Chamada é um açúcar sintático de apply. Se o primeiro parâmetro for nulo, isso no corpo da função aponta para o objeto host, que é a janela no navegador.
Usos de chamada e aplicação
1. Mude este ponto
O exemplo acima é
2. Function.prototype.bind
Simular function.prototype.bind
Function.prototype.bind = function (context) {var self = this; return function () {return self.apply (contexto, argumentos); }}; var obj = {name: 'cxs'}; var func = function () {alert (this.name); // cxs} .bind (obj); fun ();