Siempre olvídate del uso de estas dos cosas y escríbalas para hacer un disco.
Sus funciones son exactamente las mismas, pero los parámetros pasados son diferentes
aplicar
Aplicar acepta dos parámetros. El primero formula la señalización de este objeto en el cuerpo de la función, y el segundo es un conjunto con subíndices (el objeto se puede atravesar). El método de aplicación pasa los elementos en este conjunto como parámetros a la función llamada:
var func = function (a, c, c) {alert ([a, b, c]); //+1,2,3font>func.apply(null, [1,2,3]);llamar
Los parámetros pasados en la llamada no se fijan. Lo mismo que se aplica es que el primer parámetro también representa este punto en el cuerpo de la función. Después de que se inicia el segundo parámetro, cada parámetro se pasa a la función en secuencia:
var func = function (a, b, c) {alert ([a, b, c]); //+1,2,3font>func.call(null, 1,2,3);La llamada es un azúcar sintáctico de Aply. Si el primer parámetro es nulo, esto en el cuerpo de la función apunta al objeto host, que es la ventana en el navegador.
Usos de llamadas y aplicar
1. Cambia este punto
El ejemplo anterior es
2. Function.prototype.bind
Simular function.prototype.bind
Function.prototype.bind = function (context) {var self = this; function de return () {return self.apply (context, argumentos); }}; var obj = {name: 'cxs'}; var func = function () {alert (this.name); // cxs} .bind (obj); divers ();