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 .