Métodos de objeto JavaScript, "this"

En JavaScript, se crean objetos para representar entidades del mundo real, como pedidos, usuarios y más. Aquí hay un ejemplo:

Javascript objects
let site = { name: "W3Docs", }; console.log(site);

En el mundo real, actúas así: inicio de sesión, cierre de sesión, eliges algo de un carrito de compras, y más.

En JavaScript, puedes representar acciones mediante funciones en propiedades.

Ejemplos de Métodos

Tu primer paso al estudiar los métodos de objeto JavaScript debería ser aprender cómo se dice “bienvenida”. El ejemplo se verá así:

Javascript object methods
let site = { name: "W3Docs", }; site.welcome = function () { console.log("Welcome to W3Docs!"); }; site.welcome(); // Welcome to W3Docs!
Aquí se utiliza una Expresión de Función para crear una función particular y asignarla a la propiedad site.welcome del objeto.

Por lo tanto, el sitio solo puede responder después de llamarlo.

Una función particular que es la propiedad de un objeto se conoce como un método. En el ejemplo dado anterior, welcome es un método del objeto site.

Además, se puede utilizar una función predeclarada como método. Para hacer eso, necesitas invocar el siguiente comando:

Javascript object methods
let site = { name: "W3Docs", }; site.welcome = function () { console.log("Welcome to W3Docs!"); }; site.welcome(); // Welcome to W3Docs!

Descripción de la Programación Orientada a Objetos

La programación orientada a objetos (en resumen “OOP”) se centra en escribir códigos utilizando objetos para representar entidades.

OOP puede describirse como una ciencia en sí misma. Se ha realizado mucha investigación para explorar completamente cómo elegir las entidades correctas, cómo organizar la interconexión entre ellas, y mucho más. Esa es una arquitectura completamente nueva.

Forma Abreviada de Método

Puedes usar una sintaxis corta para los métodos en un objeto como este:

Javascript objects methods
// method shorthand let site = { welcome() { console.log("Welcome to W3Docs"); } }; site.welcome();

En este ejemplo, puedes ver que la palabra “function” se omite, y solo se escribe welcome. Por supuesto, puede haber diferencias vinculadas con la herencia de objetos. De todos modos, en la mayoría de los casos, es más preferible usar una sintaxis más corta.

“this” en los Métodos de Objeto

En general, para realizar su trabajo, un método de objeto debe tener la información guardada en el objeto.

Por ejemplo, el código que está dentro de site.welcome() puede necesitar el site.name.

Un método puede usar la palabra clave “this” para acceder al objeto.

El objeto “bcito antes del punto” debe ser el valor de “this”.

Por ejemplo, puedes llamar al método de la siguiente manera:

Javascript objects call the method
let site = { name: "W3Docs", welcome() { // "this" is the "current object" console.log(this.name); } }; site.welcome(); // W3Docs

En el ejemplo anterior, mientras se ejecuta site.welcome(), site será el valor de “this”.

Tienes la opción de acceder al objeto sin usar “this”. Solo haz referencia a él a través de la variable externa así:

Javascript "this"
let site = { name: "W3Docs", welcome() { console.log(site.name); // "site" instead of "this" } }; site.welcome();

Pero, ten en cuenta que este tipo de códigos no pueden ser confiables. En caso de copiar el site a una variable diferente (por ejemplo, anotherSite = site) sobrescribiendo site con otra cosa, serás dirigido a un objeto incorrecto.

Aquí hay un ejemplo:

Javascript overwrite object with another thing
let site = { name: "W3Docs", welcome() { console.log(site.name); // leads to an error } }; let anotherSite = site; site = null; // overwrite to make things obvious anotherSite.welcome(); // Whoops! inside welcome(), the old name is used! error!

“this” puede ser No-Enlazado

Comúnmente, la palabra clave JavaScript “this” puede ser utilizada en cualquier función, a diferencia de otros lenguajes de programación.

El siguiente ejemplo no tiene errores de sintaxis:

function welcome() {
  console.log(this.name);
}

En el siguiente ejemplo, la misma función se acredita a 2 objetos diferentes, e incluye diferentes distintivos “this” en las invocaciones:

Javascript distinctive "this"
let site = { name: "W3Docs" }; let anotherSite = { name: "anotherSite" }; function welcome() { console.log(this.name); } // use the same function in two objects site.func = welcome; anotherSite.func = welcome; // these calls have different this // "this" inside the function is the object "before the dot" site.func(); // W3Docs (this == site) anotherSite.func(); // anotherSite (this == anotherSite) anotherSite['func'](); // anotherSite (dot or square brackets access the method – doesn't matter)

Por lo tanto, se usan pasos simples aquí: Si primero llamas a obj.func(), entonces necesitas correr this es obj durante la invocación de func. Esto significa que en el ejemplo que se dio anteriormente, se usa site o anotherSite.

Invocando sin un objeto: this == undefined

La función incluso se puede llamar sin un objeto de la siguiente manera:

Javascript "this"
function welcome() { console.log(this); } welcome();

En el ejemplo mencionado anteriormente, this es undefined en el modo estricto. En el caso de tratar de ingresar this.name, puede ocurrir un error.

El valor de “this” en un modo no estricto será el objeto global.

Por lo general, una llamada como esta puede causar un error de programación. En caso de que haya this en la función, debería ser invocada en el contexto del objeto.

Resultados de “this” estar No-Enlazado

Si ya estás acostumbrado a otro lenguaje de programación, posiblemente estés familiarizado con la idea de “this enlazado” en la que los métodos, caracterizados en un objeto siempre obtienen “this” haciendo referencia al objeto.

“this” se puede describir como libre en JavaScript. Por lo tanto, su valor no depende de dónde se haya confirmado el método. Pero esto depende más del objeto “antes del punto”.

El concepto dado de “this” tiene tanto ventajas como desventajas. Por un lado, puedes usar la función para una variedad de objetos. Por otro lado, cuánta más flexibilidad, más posibilidades de cometer errores. Tu objetivo debería ser aprender a trabajar con esto para obtener beneficios y evitar errores.

Las Funciones de Flecha No Tienen “this”

Las funciones de flecha son únicas ya que no tienen su propio “this”. En caso de que comiences a referenciarlo desde una función como esa, se tomará de una función “normal” externa.

En el siguiente ejemplo, arrow() usa this del método: site.welcome().

Javascript "this" in arrow functions
let site = { name: "W3Docs", welcome() { let arrow = () => console.log(this.name); arrow(); } }; site.welcome(); // W3Docs

El especial método de función de flecha es especialmente útil cuando no deseas tener un “this” separado, sino que deseas tomarlo de un contexto más allá.

Hora del Cuestionario: ¡Pon a Prueba Tus Habilidades!

¿Listo para desafiar lo que has aprendido? Sumérgete en nuestros cuestionarios interactivos para una comprensión más profunda y una forma divertida de reforzar tu conocimiento.

¿Te resulta útil?