Saltar al contenido principal

Prohibición de "esto"

@serverSerrverlesskiy

¡Eliminar la palabra clave this🗝️ de JavaScript hace que el lenguaje sea mejor!

La razón es que 'esto' depende de cómo se llamó a la función⚙️, no de dónde se definió. Por lo tanto, this en JavaScript es una fuente de gran confusión en el lenguaje .

El uso de this asegura que la función opera en el objeto exacto en el contexto en el que se llama. A través del método this, no solo puede acceder a cualquier propiedad del objeto, sino también pasar a algún lugar una referencia al objeto completo (reduciendo la seguridad de la aplicación).

El valor de this se denomina contexto de la llamada y se determinará en el momento en que se llame a la función. Por ejemplo, una función como esta, declarada sin objeto, es perfectamente válida:

functionsay Hi() {
console.log(this.firstName)
}

Esta función aún no sabe qué será this. Esto quedará claro cuando se ejecute el programa.

Si la misma función se ejecuta en el contexto de diferentes objetos, recibirá un this diferente:

var user = { firstName: 'Joni' }
var admin = { firstName: 'administración' }

function funcName() {
console.log(this.firstName)
}
user.f = funcName
admin.g = funcName

//this es igual al objeto antes del punto:
user.f() // Joni
admin.g() // administración
admin['g']() //Admin (el acceso al objeto se implementa entre corchetes)

Entonces, el valor de this no depende de cómo se creó la función, se determina únicamente en el momento de la llamada.

Video

this y sus desventajas

Los métodos son funciones⚙️ que se almacenan en objetos. Para que la función⚙️ sepa en qué objeto trabajar, use this.

Poor

Pero this pierde contexto en muchas situaciones (se desconoce el valor de retorno):

  • pierde contexto dentro de funciones anidadas
  • pierde contexto en las devoluciones de llamada
  • this pierde contexto cuando el método se usa como controlador de eventos.

Mejor idioma

Lo_mejor

JavaScript es tanto un lenguaje de programación funcional como un lenguaje basado en prototipos. Si nos deshacemos de this, nos quedamos con JavaScript como un lenguaje de programación funcional⚙️ . ¡Es aún mejor!

Al mismo tiempo, sin this, JavaScript ofrece una forma nueva y única de hacer programación orientada a objetos sin clases ni herencia.

Rechazar this

recordar

¡La mejor manera de evitar problemas con this es no usar this en absoluto!

JavaScript

¡JavaScript sin esto parece el mejor lenguaje de programación funcional⚙️ !

Podemos crear objetos encapsulados sin usar this como colecciones de cierre. Con React Hooks podemos crear sin "este" componentes con estado.

La palabra clave this no se puede eliminar de JavaScript sin romper todas las aplicaciones existentes. Sin embargo, ¿qué se puede hacer? Podemos escribir nuestro propio código sin this y permitir que se use solo en bibliotecas. Mientras tanto, se están introduciendo nuevas reglas ESLint para prohibir el uso de this.

Como abandonamos en la última lección classes, también nos despedimos de this.

¿Problemas?

Problema

Escribe en Discord o Telegram chat y suscríbete a nuestras noticias

Campamento JavaScript

Preguntas

Pregunta

¿Es posible prescindir de this:

  1. Puedes, y es mejor no usarlo en absoluto
  2. Posible, pero no aconsejable
  3. Es imposible, porque this no se puede eliminar de JavaScript

JavaScript sin this se ve mejor:

  1. Lenguaje de programación funcional
  2. Lenguaje de programación procedimental
  3. Lenguaje de programación lógica

Para comprender cuánto ha aprendido esta lección, realice una prueba en la aplicación móvil de nuestra escuela sobre este tema o en nuestro bot de Telegram.

EnglishMoji!

Enlaces

  1. Artículo "Eliminar la palabra clave 'esto' de JavaScript mejora el lenguaje"
  2. Artículo "La palabra clave this en JavaScript"
  3. Documento web de MDN. Artículo "esto"

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Dmitriy K.


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

EnglishMoji!