Invocación de función de JavaScript
El código dentro de un JavaScript function
se ejecutará cuando "algo" lo invoque.
Invocar una función de JavaScript
El código dentro de una función no se ejecuta cuando se define la función .
El código dentro de una función se ejecuta cuando se invoca la función .
Es común utilizar el término " llamar a una función " en lugar de " invocar una función ".
También es común decir "invocar una función", "iniciar una función" o "ejecutar una función".
En este tutorial, usaremos invocar porque una función de JavaScript se puede invocar sin llamarla.
Invocar una función como función
Ejemplo
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
La función anterior no pertenece a ningún objeto. Pero en JavaScript siempre hay un objeto global predeterminado.
En HTML, el objeto global predeterminado es la propia página HTML, por lo que la función anterior "pertenece" a la página HTML.
En un navegador, el objeto de la página es la ventana del navegador. La función anterior se convierte automáticamente en una función de ventana.
myFunction() y window.myFunction() es la misma función:
Ejemplo
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Esta es una forma común de invocar una función de JavaScript, pero no es una buena práctica.
Las variables, métodos o funciones globales pueden crear fácilmente conflictos de nombres y errores en el objeto global.
La esta palabra clave
En JavaScript, lo que se llama this
, es el objeto que "posee" el código actual.
El valor de this
, cuando se usa en una función, es el objeto que "posee" la función.
Tenga en cuenta que this
no es una variable. Es una palabra clave. No puede cambiar el valor de this
.
Sugerencia: lea más sobre la this
palabra clave en JS this Keyword .
El objeto global
Cuando se llama a una función sin un objeto propietario, el valor de this
se convierte en el objeto global.
En un navegador web, el objeto global es la ventana del navegador.
Este ejemplo devuelve el objeto de la ventana como el valor de this
:
Ejemplo
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
Invocar una función como función global hace que el valor de this sea el objeto global.
El uso del objeto de la ventana como una variable puede bloquear fácilmente su programa.
Invocar una función como método
En JavaScript puede definir funciones como métodos de objetos.
El siguiente ejemplo crea un objeto ( myObject ), con dos propiedades ( firstName y lastName ) y un método ( fullName ):
Ejemplo
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
El método fullName es una función. La función pertenece al objeto. myObject es el propietario de la función.
La cosa llamada this
, es el objeto que "posee" el código JavaScript. En este caso, el valor de this
es myObject .
¡Pruébalo! Cambie el método fullName para devolver el valor de this
:
Ejemplo
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
Invocar una función como un método de objeto hace que el valor de this
sea el objeto mismo.
Invocar una función con un constructor de funciones
Si la invocación de una función va precedida de la new
palabra clave, es una invocación de constructor.
Parece que creas una nueva función, pero dado que las funciones de JavaScript son objetos, en realidad creas un nuevo objeto:
Ejemplo
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
La invocación de un constructor crea un nuevo objeto. El nuevo objeto hereda las propiedades y métodos de su constructor.
La this
palabra clave en el constructor no tiene un valor.
El valor de this
será el nuevo objeto creado cuando se invoque la función.