Tutorial JS

JS INICIO JS Introducción JS Dónde Salida JS Declaraciones JS Sintaxis JS Comentarios JS Variables JS JS Vamos Constante JS Operadores JS Aritmética JS Tarea JS Tipos de datos JS Funciones JS Objetos JS Eventos JS Cadenas JS Métodos de cadena JS Búsqueda de cadenas JS Plantillas de cadena JS Números JS Métodos numéricos JS Matrices JS Métodos de matriz JS Clasificación de matriz JS Iteración de matriz JS Constante de matriz JS Fechas JS Formatos de fecha JS Métodos de obtención de fecha JS Métodos de configuración de fechas JS Matemáticas JS JS al azar Booleanos JS Comparaciones JS Condiciones JS Interruptor JS Bucle JS para Bucle JS para entrada Bucle JS para de Bucle JS mientras descanso JS Iterables JS Conjuntos JS Mapas JS JS Tipo de Conversión de tipo JS JS bit a bit JS expresión regular Errores JS Alcance JS JS Elevación Modo estricto JS JS esta palabra clave Función de flecha JS Clases JS JSJSON Depuración JS Guía de estilo JS Prácticas recomendadas de JS Errores JS Rendimiento JS Palabras reservadas de JS

Versiones JS

Versiones JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Borde Historia de JS

Objetos JS

Definiciones de objetos Propiedades del objeto Métodos de objeto Visualización de objetos Accesores de objetos Constructores de objetos Prototipos de objetos Objeto iterables Conjuntos de objetos Mapas de objetos Referencia de objeto

Funciones JS

Definiciones de funciones Parámetros de función Invocación de función Llamada de función Función Aplicar Cierres de funciones

Clases JS

Introducción a la clase Herencia de clase Clase estática

JS asíncrono

Devoluciones de llamada JS JS asíncrono Promesas JS JS asíncrono/espera

JS HTML DOM

Introducción al DOM Métodos DOM Documento DOM Elementos DOM DOM HTML Formularios DOM DOM CSS Animaciones DOM Eventos DOM Oyente de eventos DOM Navegación DOM Nodos DOM Colecciones DOM Listas de nodos DOM

Lista de materiales del navegador JS

Ventana JS Pantalla JS Ubicación de JS Historia de JS Navegador JS Alerta emergente JS Tiempo JS Galletas JS

API web de JS

Introducción a la API web API de formularios web API de historial web API de almacenamiento web API de trabajo web API de búsqueda web API de geolocalización web

JS AJAX

Introducción a AJAX AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

JSJSON

Introducción JSON Sintaxis JSON JSON frente a XML Tipos de datos JSON Análisis JSON Cadena JSON Objetos JSON Matrices JSON Servidor JSON JSONPHP JSONHTML JSON JSONP

JS frente a jQuery

Selectores jQuery HTML de jQuery CSS de jQuery DOM de jQuery

Gráficos JS

Gráficos JS Lienzo JS JS Trazado Gráfico JS.js Gráfico de Google JS JS D3.js

Ejemplos de JS

Ejemplos de JS JS HTML DOM Entrada HTML JS Objetos JS HTML Eventos JS HTML Navegador JS Editor JS Ejercicios JS Prueba JS Certificado JS

Referencias JS

Objetos JavaScript Objetos HTML DOM


Invocación de función de JavaScript


El código dentro de un JavaScript functionse 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 thisno es una variable. Es una palabra clave. No puede cambiar el valor de this.

Sugerencia: lea más sobre la thispalabra 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 newpalabra 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 thispalabra clave en el constructor no tiene un valor.
El valor de thisserá el nuevo objeto creado cuando se invoque la función.