1. Definición del método
Método de llamadas:
Sintaxis: call ([thisObj [, arg1 [, arg2 [, [, .argn]]]]])
Definición: llame a un método de un objeto para reemplazar el objeto actual con otro objeto.
ilustrar:
El método de llamada se puede usar para llamar a un método en lugar de otro objeto. El método de llamada cambia el contexto del objeto de una función desde el contexto inicial a un nuevo objeto especificado por ThisObj.
Si no se proporciona el parámetro de este OBJ, el objeto global se usa como ThisObj.
Aplicar método:
Sintaxis: aplicar ([thisObj [, argararray]])
Definición: aplique un método de cierto objeto y reemplace el objeto actual con otro objeto.
ilustrar:
Si Argarray no es una matriz válida o no es un objeto de argumentos, se generará un TipoError.
Si no se proporcionan argumentos, el objeto global se utilizará como este OBJ y no se puede aprobar ningún argumento.
2. Ejemplos comunes
a.
La copia del código es la siguiente:
función add (a, b)
{
alerta (a+b);
}
función sub (a, b)
{
alerta (ab);
}
add.call (sub, 3,1);
El significado en este ejemplo es reemplazar SUB con add, add.call (sub, 3,1) == add (3,1), por lo que el resultado en ejecución es: alerta (4); // NOTA: La función en JS es en realidad un objeto, y el nombre de la función es una referencia al objeto de función.
b.
La copia del código es la siguiente:
función animal () {
this.name = "animal";
this.showname = function () {
alerta (this.name);
}
}
function cat () {
this.name = "Cat";
}
var animal = new Animal ();
var cat = new Cat ();
// a través del método de llamada o aplicar, el método Showeame () originalmente perteneciente al objeto animal se entrega al objeto Cat para su uso.
// El resultado de la entrada es "gato"
animal.showname.call (gato ",");
//animal.showname.apply (cat, []);
Llamar significa poner el método animal en CAT para ejecutar. Resulta que CAT no tiene un método Showeame (). Ahora, colocar el método animal showsame () en gato para ejecutar, por lo que este nombre debe ser gato
do. Realizar la herencia
La copia del código es la siguiente:
función animal (nombre) {
this.name = name;
this.showname = function () {
alerta (this.name);
}
}
function cat (nombre) {
Animal.call (esto, nombre);
}
var gato = nuevo gato ("gato negro");
cat.showname ();
Animal.call (esto) significa usar objeto animal en lugar de este objeto. ¿Entonces no hay todas las propiedades y métodos de animales en CAT? El objeto CAT puede llamar directamente a los métodos y propiedades animales.
d. Herencia múltiple
La copia del código es la siguiente:
Función class10 ()
{
this.showsub = function (a, b)
{
alerta (ab);
}
}
función class11 ()
{
this.showadd = function (a, b)
{
alerta (a+b);
}
}
función class2 ()
{
Class10.call (esto);
Class11.call (esto);
}
Es muy simple, usar dos llamadas para lograr múltiples herencias
Por supuesto, existen otros métodos para heredar JS, como el uso de cadenas prototipo, que no caen en el alcance de este artículo, sino que solo explica el uso de llamadas aquí. Hablando de llamadas, por supuesto, también hay aplicados. Estos dos métodos básicamente significan lo mismo. La diferencia es que el segundo parámetro de llamada puede ser de cualquier tipo, mientras que el segundo parámetro de Aplicar debe ser una matriz o argumentos
Y Callee, persona que llama ..