type script qué llamar externo enlazar desde con como archivo javascript function call bind apply

llamar - qué es un script de javascript externo



¿cuál es la diferencia entre ''llamar/aplicar'' y ''vincular'' (3)

La diferencia es cómo haces la llamada. Si ha usado bind para recuperar una función con un límite de this valor, solo llama a la función:

getx();

Si no tiene una función enlazada y desea configurarla, debe hacerlo mediante call o apply :

someFunction.call(objectToUseAsThis, arg1, arg2); // or someFunction.apply(objectToUseAsThis, [arg1, arg2]);

Tenga en cuenta que si tiene una función enlazada (como su getX ), usar call on no tiene sentido, porque this usted proporciona será anulado por el límite. (El uso de apply aún puede ser útil, si tiene una matriz de valores que desea analizar como argumentos).

Esta pregunta ya tiene una respuesta aquí:

var obj = { x: 81, getX: function() { console.log( this.x) } }; var getX = obj.getX.bind(obj);//use obj as ''this''; getX();//81 var getX = function(){ obj.getX.apply(obj); } getX();//also 81

El uso de bind y call / apply se ve muy similar, quiero saber cuál es la diferencia entre ellos. Las dos funciones getX anteriores son las mismas.


.call() - llama a la misma función con los argumentos especificados

.apply() - llama a la misma función con los argumentos especificados en una matriz

.bind() - crea una nueva función con el mismo cuerpo de función, con un valor preestablecido de this (el primer argumento) y devuelve esa función.

En todos los casos, el primer argumento se usa como el valor de this dentro de la función.


bind devuelve una función que actuará como la función original pero con this predefinida. Generalmente se usa cuando desea pasar una función a un controlador de eventos u otra devolución de llamada asincrónica.

call y apply llamará a una función que le permite especificar el valor de this y cualquier argumento que reciba la función.

Su segundo ejemplo define una función anónima que llama apply . Este es un patrón común; bind proporciona una implementación estándar de lo que le permite hacerlo con una llamada de función simple (por lo tanto, es más rápido y fácil de escribir).