javascript-tutorial / javascript-tutorial/en.javascript.info
Proxy and Reflect Article — Arrow Functions or `this` in Class constructor
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- HTML
- Estrellas
- 25.5k
- Forks
- 4k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Source: https://javascript.info/proxy
Date Accessed: 1 March 2022
A serious limitation in ES6 Proxy is the inability to proxy internal use of the this context inside a class. In the password example, if we use a class, then the differences in behaviour from using an arrow function vs a method is clear:
class User {
name = "John";
_password = "***";
checkPassword(value: string) {
return value === this._password;
}
checkPassword2 = (value: string) => {
return value === this._password;
}
};
const user = new Proxy(new User(), {
get(target: any, prop: string) {
if (prop.startsWith('_')) {
throw new Error("Access denied");
}
let value = target[prop];
// Commenting out the workaround
return value; // (typeof value === 'function') ? value.bind(target) : value; // (*)
},
});
console.log(user.checkPassword2('***')); // Arrow function works without the workaround because `this` is the internal context
console.log(user.checkPassword('***')); // Method fails with `Access denied` as expected
The point here is that if your class passes this somewhere in the constructor then that this cannot be proxied. This is a significant limitation of Proxy and should probably be mentioned in the article.
A good write up BTW.
Thanks
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el artículo sobre Proxy en https://javascript.info/proxy y revisa el ejemplo de la contraseña junto con el comportamiento reportado de las clases y las arrow functions. Actualiza el artículo para explicar la limitación relacionada con el uso interno de this y el acceso mediante Proxy; se considera terminado cuando la distinción y el contexto de la solución alternativa estén documentados con precisión.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 45/100