llamada, aplicar y resolver el uso de bind

La función de JavaScript es un objeto, un objeto puede ser llamado. Es un sub-tipo del objeto función. typeof functionName === "object"También ilustra este punto. objeto de función puede contener métodos, es llamada, se aplican funciones y método de enlace que tenemos que tratar hoy.

  • Cualquier función se puede utilizar como un método para llamar a cualquier objeto, incluso después de este método no es la función de ese objeto, el objeto como una función de la llamada de método dentro de una función esto apunta al objeto a ser atado.

  • llamar y aplicar métodos visto como un objeto, en forma de llamada de método a funciones de llamada indirecta.

  • llamar () y aplicar () El primer argumento es la función para llamar al objeto padre es, diferente de estos dos métodos es que una forma diferente de paso de parámetros.

  • call () además de otros parámetros que el primer valor de parámetro se pasa a la función de llamada a ser.

  • Aplicar () parámetros de llamada función pasada en una matriz.

  • El papel principal de este método de enlace se une a una función a un objeto. Cuando la llamada de la función f bind () en el método () y pasando un objeto o como un parámetro, este método devuelve una nueva función. La nueva función llamará a la función original f () o como una forma de llamar. Cualquier argumento pasado en la nueva función se pasarán la función original. se unen entrante () argumentos serán obligados a esto.

Los ejemplos de la llamada al método y se aplican:

//要想以对象o的方法调用函数f(),并传递参数1,2,可以这样做:
var o = { a : 1 }
function f( x , y ){
	console.log( this.a + x + y )
	return 124
}
//f()函数被执行,this指向对象o,this.a === 1
f.call(o,1,2); //4
//返回值是函数的返回值
var result = f.call(o,1,2) //result === 124
f.call(o,1) //NaN ,未传入y,y为undefined
//调用的对象方法不变
console.log(o); //{a:1}
console.log(o.f === f); //false
f.apply(o,[1,2]); //4

aplicación de llamadas, llame al método de la matriz de cadenas se unen directamente:

//join:将数组的元素根据传入的参数进行拼接返回拼接后的字符串
var a = "foo";
//直接调用时字符串没有join方法
console.log(a.join); //undefined
 //通过call去调用Array对象的方法
var c = Array.prototype.join.call(a, "-");
console.log(c); //f-o-o

bind método Ejemplo:

var sum = function(x, y) {
  console.log(this.a, x, y);
  return this.a + x + y; //this由调用时决定,由下文可知,this指向o对象
};

var o = { a: 1 };

var targeFun = sum.bind(o, 2); //2传入到 x 位置,下面调用传入的3 传入到 y 位置
var m = targeFun(3); //1,2,3
console.log(m); //6

Por el método de llamada, podemos ir a llamar a diferentes tipos de variables tienen diferentes métodos de contexto.


Referencia:
guía definitiva JavaScript

Publicado 18 artículos originales · ganado elogios 10 · vistas 616

Supongo que te gusta

Origin blog.csdn.net/llq886/article/details/104220915
Recomendado
Clasificación