Prohibición de "esto"
¡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.
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
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
¡La mejor manera de evitar problemas con this
es no usar this
en absoluto!
¡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?
Escribe en Discord o Telegram chat y suscríbete a nuestras noticias
Preguntas
¿Es posible prescindir de this
:
- Puedes, y es mejor no usarlo en absoluto
- Posible, pero no aconsejable
- Es imposible, porque
this
no se puede eliminar de JavaScript
JavaScript sin this
se ve mejor:
- Lenguaje de programación funcional
- Lenguaje de programación procedimental
- 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.
Enlaces
- Artículo "Eliminar la palabra clave 'esto' de JavaScript mejora el lenguaje"
- Artículo "La palabra clave this en JavaScript"
- Documento web de MDN. Artículo "esto"
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Dmitriy K. | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |