Esta flecha a máquina de escribir definiciones?

votos
2

Escribí tal objeto literal a máquina de escribir:

var object = {
    message: Say,
    say: () => {
        return this.message;
     }
};

Y tengo tales JavaScript generado:

var object = {
    message: Say,
    say: function () {
        return _this.message;
    }
};

¿No debería ser tal línea antes de instrucción de retorno:

 var _that = this;

como yo estoy usando la expresión de la función de la flecha?

Publicado el 10/10/2012 a las 00:00
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
2

=>es un poco de un peligro en este caso, ya que, por la crítica, que se une thisa la envolvente de alcancethis . En la generación de código correcto, la var _this = this;línea pasa por encima de la literal de objeto y su sayfunción simplemente devuelve undefined.

Para que sólo desea utilizar thisen una =>expresión cuando en realidad se desea hacer referencia a thisque estaría presente en el ámbito de inclusión. En este caso particular, no (desea que el ámbito interior this, es decir, el propio objeto literal).

Respondida el 10/10/2012 a las 00:25
fuente por usuario

votos
2

Estás en lo correcto. Le falta el:

var _this = this;

Esto se descubrió después de la liberación (0.8) y actualmente está fijado en la rama desarrollador.

Nota: También creo que quería escribir

var object = {
    message: "Say",
    say: function () {
        return () => this.message;
    }
};

que podía comprender imprimir Say cuando se ejecuta. Ver: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax

Respondida el 10/10/2012 a las 00:03
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more