chamada, aplicar e resolver o uso ligamento

A função JavaScript é um objeto, um objeto pode ser chamado. É um sub-tipo do objecto função. typeof functionName === "object"Também ilustra este ponto. objeto de função pode conter métodos, é chamada, aplicar e funções Método de vinculação que temos para discutir hoje.

  • Qualquer função pode ser utilizada como um método para ligar a qualquer objeto, mesmo depois de este método não é a função de esse objecto, o objecto, como uma função de chamada do método dentro de uma função este facto aponta para o objecto a ser ligado.

  • ligar e aplicar métodos vistos como um objecto, sob a forma de chamada de método para as funções de chamada indirectamente.

  • chamar () e aplicar () O primeiro argumento é a função de chamar o objecto principal é, diferente a partir destes dois métodos é que uma forma diferente de passagem de parâmetros.

  • call (), além de outros parâmetros do que o primeiro valor do parâmetro é passado para a função chamada para ser.

  • aplicar () parâmetros de chamada de função passados ​​em uma matriz.

  • O principal papel deste método de ligação se liga a uma função a um objecto. Quando a chamada da função f bind () no método () e passando um objeto o como um parâmetro, este método retorna uma nova função. A nova função irá chamar a função original f () o como uma forma de chamar. Quaisquer argumentos passados ​​na nova função será passada a função original. se ligam de entrada () argumentos vai ser ligado a este.

Exemplos da chamada do método e aplicar:

//要想以对象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

aplicação chamada, chamar o método da matriz de cadeia directamente juntar-se:

//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

Exemplo ligam método:

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

Pelo método de chamada, nós podemos ir para chamar diferentes tipos de variáveis ​​tem diferentes métodos de contexto.


Referência:
Guia JavaScript Definitive

Publicado 18 artigos originais · ganhou elogios 10 · vista 616

Acho que você gosta

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