Llamada de función de JavaScript
Reutilización de métodos
Con el call()
método, puede escribir un método que se puede usar en diferentes objetos.
Todas las funciones son métodos
En JavaScript todas las funciones son métodos de objetos.
Si una función no es un método de un objeto JavaScript, es una función del objeto global (ver capítulo anterior).
El siguiente ejemplo crea un objeto con 3 propiedades, firstName, lastName, fullName.
Ejemplo
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
La esta palabra clave
En una definición de función, this
se refiere al "propietario" de la función.
En el ejemplo anterior, this
es el objeto de persona el que "posee" la
función fullName .
En otras palabras, this.firstName significa la propiedad firstName de este objeto .
Lea más sobre la this
palabra clave en JS this Keyword .
El método de llamada de JavaScript ()
El call()
método es un método JavaScript predefinido.
Se puede usar para invocar (llamar) un método con un objeto propietario como argumento (parámetro).
Con call()
, un objeto puede usar un método que pertenece a otro objeto.
Este ejemplo llama al método fullName de person, usándolo en person1 :
Ejemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
Este ejemplo llama al método fullName de person, usándolo en person2 :
Ejemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
El método call() con argumentos
El call()
método puede aceptar argumentos:
Ejemplo
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");