Lo principal que quiero resolver los siguientes problemas:
1. ¿Cuál es la diferencia entre aplicar y llamar?
2. Otros usos inteligentes de aplicar (generalmente bajo las circunstancias que se pueden aplicar)
Primero encontré las definiciones de aplicar y llamar desde Internet, y luego utilicé ejemplos para explicar el significado de estos dos métodos y cómo usarlos.
Aplicar: el método puede secuestrar el método de otro objeto y heredar las propiedades de otro objeto.
El método Function.Apply (OBJ, Args) puede recibir dos parámetros
OBJ: este objeto reemplazará este objeto en la clase de funciones
Args: Esta es una matriz, se pasará como un argumento para funcionar (args-> argumentos)
Llame: significa lo mismo que aplicar, pero la lista de parámetros es diferente.
Function.call (obj, param1, param2, ..., paramn)
OBJ: este objeto reemplazará este objeto en la clase de funciones
Parámetros: esta es una lista de parámetros
Ejemplo de aplicar:
<script type = "text/javaScript">/*Definir una persona humana*/function (nombre, edad) {this.name = name; this.age = edad;} /*Defina una clase de estudiante* /functionStudent (nombre, edad, grado) {persona.apply (this, argumentos); this.grade = grado;} // Cree una clase de estudiante var estudiante = nuevo estudiante ("qian", 21, "primer grado"); // prueba alerta ("nombre:"+student.name+"/n"+"edad:"+student.age+"/n"+"grado:"+student.grade); // puede ver el resultado del resultado de la prueba: qian edad: 21 grado: grado de grado: primer grado // no cedí los valores a los valores de la edad. ¿Por qué estos dos atributos tienen valores? Esta es la magia de la aplicación. </script>Análisis: Person.Aply (esto, argumentos);
Esto: al crear un objeto, representa al estudiante
Argumentos: es una matriz, es decir ["qian", "21", "primer grado"];
En otras palabras, en términos de laicos, es: use el estudiante para ejecutar el contenido de la clase de persona. Hay declaraciones como esta.
Ejemplo de llamada
En la función de estudio, puede modificar la aplicación a lo siguiente:
Person.call (esto, nombre, edad);
la diferencia
Al dar parámetros del objeto, si el formulario de parámetros es una matriz, por ejemplo, los argumentos de parámetros se pasan en el ejemplo de aplicación, este parámetro es un tipo de matriz, y al llamar a la persona, la lista de parámetros corresponde a los mismos (es decir, los primeros dos dígitos de la lista de parámetros de persona y del estudiante son consistentes), puede usar aplicar. Si la lista de parámetros de mi persona es así (edad, nombre) y la lista de parámetros del estudiante es (nombre, edad, grado), esto se puede lograr llamando, es decir, especificando directamente la posición del valor correspondiente de la lista de parámetros (persona.
Algunos otros usos inteligentes de aplicar
Las personas cuidadosas pueden haber notado que cuando llamo el método de aplicación, el primer parámetro es el objeto (esto), y el segundo parámetro es una colección de matriz.
Al llamar a la persona, lo que necesita no es una matriz, pero ¿por qué me da una matriz? Todavía puedo analizar la matriz en un parámetro,
Este es un uso inteligente de aplicar. Puede convertir una matriz a una lista de parámetros de forma predeterminada ([Param1, Param2, Param3] a Param1, Param2, Param3). Si usamos el programa para implementar la implementación de reemplazar cada elemento en la matriz con una lista de parámetros, puede llevar un tiempo. Con la ayuda de esta característica de Aplicar, tenemos el siguiente método eficiente:
a) Math.max puede lograr el elemento más grande en la matriz
Porque el parámetro Math.max no es compatible con Math.max ([Param1, Param2]) es decir, matriz
Sin embargo, es compatible con Math.max (Param1, Param2, Param3 ...), por lo que puede resolver el problema de var max = math.max.apply (null, matriz) basado en la característica de aplicar justo ahora, para que pueda obtener fácilmente el elemento más grande en una matriz en una matriz
(Aplicar reemplazará un conjunto de matriz con un parámetro y lo pasará al método tras otro)
Cuando se llama a esta parte, el primer parámetro recibe un nulo. Esto se debe a que no hay ningún objeto para llamar a este método. Solo necesito usar este método para ayudarme a calcular y obtener el resultado devuelto. Entonces pasé directamente un nulo
b) Math.Min puede lograr el elemento más pequeño en la matriz
Además, es lo mismo que Max
var min = math.min.apply (nulo, matriz);
c) array.prototype.push puede implementar la combinación de dos matrices
El método Push no proporciona Push una matriz, pero proporciona Push (Param1, Param, ... Paramn) para que también pueda instalar y reemplazar la matriz aplicando, es decir:
vararr1 = nueva matriz ("1", "2", "3"); vararr2 = nueva matriz ("4", "5", "6"); Array.prototype.push.apply (arr1, arr2);También se puede entender de esta manera, ARR1 llama al método Push, y los parámetros se reemplazan aplicando el ensamblaje de la matriz en un conjunto de listas de parámetros.
Lo anterior es la comprensión completa de la llamada de entrada clave que el editor le brinda. Espero que todos puedan apoyar a Wulin.com ~