La introducción a la llamada () en el sitio web oficial de Mozilla es:
La copia del código es la siguiente:
El método de llamada () llama a una función o método con un valor especificado y varios valores de parámetros especificados.
Llamar () sintaxis
La copia del código es la siguiente:
Fun.call (Thatesarg [, arg1 [, arg2 [, ...]]])
Parámetro de llamada ()
thantarg
La copia del código es la siguiente:
Este valor especificado cuando la función divertida se está ejecutando. Cabe señalar que el valor especificado no significa necesariamente el verdadero valor cuando se ejecuta la función. Si esta función está en modo no riguroso, este valor especificado como nulo y indefinado apuntará automáticamente al objeto global (el objeto de la ventana en el navegador), y este valor con el valor original (número, cadena, valor booleano) apuntará al objeto de envoltura automática del valor original.
Arg1, Arg2, ...
La copia del código es la siguiente:
Lista de parámetros especificados.
Método de llamada () en JavaScript
No prestemos atención a las complicadas explicaciones anteriores, comience este proceso paso a paso.
Ejemplo de método de llamada ()
Entonces escribí otro hola, mundo:
La copia del código es la siguiente:
function print (p1, p2) {
console.log (p1 + '' + p2);
}
imprimir ("hola", "mundo");
print.call (indefinido, "hola", "mundo");
Los dos métodos tienen la misma salida, sin embargo, en contraste, el método de llamada también pasa un indefinado.
A continuación, veamos otro ejemplo.
La copia del código es la siguiente:
var obj = function () {};
function print (p1, p2) {
console.log (p1 + '' + p2);
}
print.call (obj, "hola", "mundo");
Pero aquí, lo que pasamos todavía es un indefinido, porque lo indefinido en el ejemplo anterior es porque un parámetro debe pasar. No hay un reflejo real del uso de llamadas aquí, vea un mejor ejemplo.
La copia del código es la siguiente:
function print (nombre) {
console.log (this.p1 + '' + this.p2);
}
var h = {p1: "hola", p2: "mundo", print: print};
h.print ("fd");
var h2 = {p1: "hola", p2: "mundo"};
print.call (h2, "nada");
La llamada se llama pedir prestado los métodos y objetos de otras personas, al igual que llamar al suyo. En H.print, cuando una función se llama como método, esto apuntará al objeto relacionado. Pero en este ejemplo, no entendimos si H2 llamó impresión o impresión llamado H2. Entonces cité el ejemplo de Mozilla
La copia del código es la siguiente:
Producto de funciones (nombre, precio) {
this.name = name;
this.price = precio;
if (precio <0)
Throw RangeError ('No se puede crear el producto "' + nombre + '" con un precio negativo');
devolver esto;
}
function food (nombre, precio) {
Product.call (este, nombre, precio);
this.Category = 'Food';
}
Food.prototype = new Product ();
var queso = nuevo alimento ('queso feta', 5);
console.log (queso);
Aquí realmente podemos entender qué objeto llama qué método. En el ejemplo, las instancias de objetos creadas usando el constructor de alimentos tendrán los atributos de nombre y precio agregados en el constructor del producto, pero el atributo de categoría se define en el constructor respectivo.
La copia del código es la siguiente:
function print (nombre) {
console.log (this.p1 + '' + this.p2);
}
var h2 = function (no) {
this.p1 = "hola";
this.p2 = "mundo";
print.call (esto, "nada");
};
h2 ();
Aquí H2 se usa como receptor para llamar a la impresión de la función. Como en el ejemplo de alimentos, en un constructor infantil, puede implementar la herencia llamando al método de llamadas del constructor principal.
En cuanto a las ventajas del método de llamadas, se introduce en "JavaScript efectivo".
1. Use el método de llamada para personalizar el receptor para llamar a la función.
2. Use el método de llamada para llamar a un método que no existe en el objeto dado.
3. Use el método de llamada para definir funciones de orden superior que permitan a los usuarios especificar destinatarios para las funciones de devolución de llamada.