aplicar \ llamar \ enlazar notas

efecto

  • Existente cambiando el contexto de una función en tiempo de ejecución, es decir, cambiando el este punto interno de la función

diferencia

  • Los parámetros son diferentes

call ()
语法 : (thisobj [, arg1 [, arg2 [, [,… argN]]]])
fun.call (obj, arg1, arg2);

aplicar ()
语法: (thisobj [, arr])
fun.call (obj, arr);

bind ()
语法 : (thisobj [, arg1 [, arg2 [, [,… argN]]]])
fun.bind (obj, arg1, arg2);

//示例代码
banana = {
    color: "yellow"
}

var apple = {
    color:'apple',
    say: function(str1, str2){
	console.log(this.color, str1, str2)
    }
}
var  temp = apple.say.bind({color:'bind'});
var temp2 = apple.say.bind({color:'bind'}, 'c1', 'c2');

apple.say.call(banana);     
apple.say.apply(banana);   
apple.say.call(banana, 'a1', 'a2');     
apple.say.apply(banana, ['b1', 'b2']);  

//调用时候才执行
temp(); 
temp2();
  • Tiempo de llamada diferente

bind es devolver la función correspondiente, que es conveniente llamar más tarde; aplicar y llamar son para llamar inmediatamente.

Uso especial y código excelente

  • Mejora de seguimiento

Mejora de seguimiento

Lo siguiente es complicado, no es necesario que lo mires y las estadísticas estarán limpias en el seguimiento.

Una característica importante de JavaScript es que las funciones tienen los conceptos de "contexto de tiempo de definición" y "contexto de tiempo de ejecución" y "el contexto se puede cambiar".

Para aplicar y llamar, el efecto es exactamente el mismo, pero la forma de aceptar parámetros es diferente.

banana = {
    color: "yellow"
}
apple.say.call(banana);     //My color is yellow
apple.say.apply(banana);    //My color is yellow

Uso especial:
interior: https://www.cnblogs.com/coco1s/p/4833199.html

El método bind () es similar a aplicar y llamar, y también puede cambiar la dirección de esto en el cuerpo de la función.

var foo = {
    bar : 1,
    eventBind: function(){
        var _this = this;
        $('.someClass').on('click',function(event) {
            /* Act on the event */
            console.log(_this.bar);     //1
        });
    }
}
var foo = {
    bar : 1,
    eventBind: function(){
        $('.someClass').on('click',function(event) {
            /* Act on the event */
            console.log(this.bar);      //1
        }.bind(this));
    }
}

Otros usos de bind:

(Estudie lentamente)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind


Otro uso más simple de la función parcial bind () es hacer que una función tenga parámetros iniciales preestablecidos. Estos parámetros (si los hay) siguen a este (u otros objetos) como el segundo parámetro de bind (), y luego se insertarán al principio de la lista de parámetros de la función de destino, y los parámetros pasados ​​a la función de vinculación serán Siguelos.

Y el uso de settimeout

//优秀代码
function log(){
  var args = Array.prototype.slice.call(arguments);
  args.unshift('(app)');
 
  console.log.apply(console, args);
};

PD: ¡El contenido de este artículo es una colección de notas de muchos artículos y códigos recopilados en Internet! Así que el tipo de artículo es "traducción". ¡Pido disculpas por algunas URL no incluidas en el artículo! Gracias de nuevo .

Supongo que te gusta

Origin blog.csdn.net/a519991963/article/details/84143033
Recomendado
Clasificación