El uso de las tres funciones llama, aplica y BIND es un punto de conocimiento que no puede superarse aprendiendo el lenguaje de JavaScript. Permítanme resumir el uso de los tres y los escenarios de aplicación común.
Primero, mire la función de llamada, que puede entenderse como "préstamo" y "solicitud". Imagine el siguiente escenario: está deambulando solo y desea llamar hogar si tiene asuntos urgentes, pero desafortunadamente, su teléfono está adeudado, o está fuera del poder, o cae en un pozo. En resumen, su teléfono simplemente no funciona. Pero debe hacer esta llamada, para que pueda tomar prestado el teléfono celular de un amigo, el teléfono celular de un vecino o un teléfono público. De esta manera, puede completar la llamada sin que su teléfono esté disponible. En cuanto a quién usa el teléfono, no importa. De todos modos, es el mismo efecto que hacer una llamada con su propio teléfono. La intención original de la función de llamada también es similar a esta. Permítanme usar el código para simular su escenario de aplicación:
var frog = {name: 'frog', say: function () {alert (this.name); }} var rabbit = {nombre: 'conejo'} frog.say.call (rubbit) // conejoRubbit es un objeto tonto, pero si quiere decir su nombre, es imposible lograrlo con su propia habilidad. Afortunadamente, tiene un buen amigo llamado Frog, que puede hablar. Entonces, Rubbit le pidió a Frog que se diera cuenta de este deseo para ello. El primer parámetro de Frog.say.call () debe completarse en la persona que emitió la solicitud, y al abogado le gusta llamarlo el cliente. Aquí está la solicitud de Rubbit Frog para decirle el nombre, así que complete Rubbit. De esta manera, al decir, se buscará el nombre de Rubbit en lugar del nombre de la rana. ¿Cómo se vería si llenara Frog aquí? Es como pedirte que hagas algo y alimentándote con sal. Puedes probarlo:
var frog = {name: 'frog', say: function () {alert (this.name); }} var rabbit = {nombre: 'conejo'} frog.say.call (rana) // ranaAlimentarse una bolsa de sal debe ser su nombre, y eso no es nada inesperado. Echemos un vistazo al uso clásico de Call:
// Convertir los parámetros en la función del objeto de matriz real frog () {var arr = [] .slice.call (argumentos); console.log (arguments.slice, arr.slice) // función indefinida slice () {[código nativo]}} rana (1,2,3,4)Después de esta llamada, podemos usar el objeto Argumentos como un objeto de matriz. Hay muchas formas de usar la llamada. Si abre el código fuente de JQuery, puede encontrar fácilmente muchos lugares para usarlo. No los enumeraré a todos aquí, pero volveré a la escena ante nosotros. Es demasiado simple para pedir prestada una llamada telefónica. Después de hacer una llamada telefónica, definitivamente querré recuperar algo. Después de todo, he estado deambulando durante tantos años y no he estado filial con los ancianos y he comprado algunas especialidades locales para regresar. Definitivamente es genial. Sin embargo, la presión de la vida exterior es tan grande que, además de trabajar, también hay horas extras todos los días. Si se desprende, no solo se deducirá su salario, sino que también tendrá que gastar muchos gastos de viaje. La suma de este dinero es probablemente suficiente para que los ancianos pasen un año en casa. No fue rentable pensarlo, así que pensé en la función de llamada nuevamente. Pedirle ayuda, es una elección muy sabia recuperarlo por cierto, y no cobra, no limita la cantidad, no limita el peso y puede traer tanto como usted. Usaré el código para demostrarlo nuevamente:
var frog = {nombre: 'rana', enviar: función (dinero, comida, leche, suagate) {alerta (dinero+comida+leche+suagate); }} var rabbit = {nombre: 'conejo'} frog.send.call (rubbit, 'dinero', 'comida', 'leche', 'suagate'))Si es rico y voluntario, incluso puede enviar algunos iPhone6 Plus o algo así. .^_^.
Hablando de esto, la llamada casi ha terminado. No sé si el drama de la escena anterior te hace entender qué es la llamada. Si solo despierta tu nostalgia, entonces lo siento.
Call también tiene un medio hermano llamado Aplicar. Si comprende el uso de llamadas, entonces aplicar es en realidad lo mismo. La única diferencia es que cuando la aplicación no le gusta pasar las cosas, parece muy problemático poner una cosa en una bolsa, y no es amigable con el medio ambiente. Así que proporcionó una caja grande para las cosas, y simplemente pone todas las cosas que desea transmitir en la caja que proporcionó. Esta gran caja es una matriz. Si el ejemplo anterior se realiza con Aplicar, es así:
var frog = {nombre: 'rana', enviar: función (dinero, comida, leche, suagate) {alerta (dinero+comida+leche+suagate); }} var rabbit = {name: 'conejo'} // Presta atención a la diferencia en los parámetros frog.send.apply (Rubbit, ['dinero', 'comida', 'leche', 'Suagate']))Lo anterior es la vida pasada y presente de aplicar, llamar. Pero inesperadamente, aplicar y el padre de Call hizo una fortuna en los bienes raíces hace unos años, y había un niño ilegítimo llamado Bind Outside. Aunque sus dos hermanos llaman y solicitan debutar unos años más tarde, sus habilidades no deben subestimarse. Sin embargo, su identidad no es reconocida en algunos lugares. Por ejemplo, IE6. A continuación, usaré código para demostrar sus habilidades:
var name = 'Rubbit'; var frog = {name: 'frog', say: function () {setTimeout (function (dinero, leche) {alerta (this.name+dinero+leche)} .bind (this, 'dinero', 'leche'), 1000)}} frog.say ();A través de la comparación, se descubrió que el enlace se puede conectar directamente a la función () {}. Es equivalente a guardar llamadas y aplicar, y especificar directamente el principal y los parámetros que se pasarán después de la función. En términos del estilo de pasar el Sigma, es más como una llamada.
Con respecto a Bind, echemos un vistazo a otro uso clásico:
var obj = {name: 'frog'} document.addeventListener ('click', function () {alert (this.name); // frog} .bind (obj), falso);Para resumir, aplicar, llamar, vincular, las similitudes entre estos tres hermanos son:
1. El primer parámetro es el alcance del gobierno, es decir, cuyo territorio es el trabajo.
2. Todos los parámetros se pueden pasar
Las diferencias son:
Aplicar, la llamada tiene una mejor compatibilidad, unir algunas versiones más bajas de los navegadores no lo admiten.
Los parámetros pasados por aplicar deben envolverse en una matriz, mientras que la llamada y el enlace se enumeran uno por uno.
¿Ha obtenido una comprensión más profunda del uso de las tres funciones llaman, aplica y vincula? Espero que este artículo pueda ser útil para usted.