La respuesta aceptada es genial. Es mejor si está dispuesto a utilizar la sintaxis de función normal en lugar de la "sintaxis de función de flecha" compacta.
Pero tal vez te gusten mucho las funciones de flecha; tal vez use la función de flecha por otra razón que una sintaxis de función normal no puede reemplazar ; puede que necesite una solución diferente.
Por ejemplo, noto que OP usa this
, es posible que desee enlazar this
léxicamente; también conocido como "no vinculante de esto" ), y las funciones de flecha son buenas para ese vínculo léxico.
Todavía puede usar una función de flecha con un captador a través de la Object.defineProperty
técnica.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Ver menciones de object initialization
técnica (alias get NAME() {...}
) vs defineProperty
técnica (alias get : ()=>{}
) . Hay al menos una diferencia significativa, el uso defineProperty
requiere que las variables ya existan:
Definición de un captador en objetos existentes
es decir, con Object.defineProperty
debe asegurarse de que your_obj
(en mi ejemplo) exista y se guarde en una variable (mientras que con a object-initialization
podría devolver un objeto-literal en la inicialización de su objeto :) {..., get(){ }, ... }
. Más información sobre Object.defineProperty
específicamente, aquí
Object.defineProperty(...)
parece tener un soporte de navegador comparable a la get NAME(){...}
sintaxis; navegadores modernos, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.