Básicamente, estoy tratando de comprender y aprender el principio de funcionamiento de la palabra clave "this" en JavaScript.'esta' palabra clave se refiere a qué objeto dentro de una función dentro de otra función?
Por lo que entiendo 'esto' se refiere al objeto (función) que está dentro de ese momento.
Así, por creer esto, yo quería poner a prueba la salida de la simple código de abajo:
<body>
<input type="button" value="Add Age" onclick="Outer()" />
<script type="text/javascript">
function Outer(){
if(typeof this.Father == 'undefined')
{
this.Father = 0;
}
this.Father+=2;
alert(this.Father);
inner();
function inner(){
if(typeof this.Son== 'undefined')
{
this.Son = 0;
};
this.Son++;
alert(this.Son);
alert(this.Father);
};
};
</script>
</body>
y su salida me confunde. Porque en la función inner(), this.Son emite el valor entero incrementado de Son. Pero espero esto. Padre falla porque inner() no tiene un atributo .Father. Pero en lugar de lanzar una excepción que alerta al valor de this.Father -¿Cuál parece
- una línea por encima se refiere esto interior()
- y siguiendo la línea se refiere esto externo (la)
en este punto tengo 2 preguntas en mi mente podía comprender:
¿el 'esto' se refiere siempre a la palabra clave la carcasa externa del alcance incluso dentro de las funciones internas?
Y sin tener ninguna instancia declarada 'esta' palabra clave ¿qué hace referencia al método? (Me refiero a algo sin tener lik
var myFamily = new Outer()
)
Gracias,
Ozdogan Burak
Gracias, es información realmente útil. puede encontrar algo más acerca de los patrones de invocación en este artículo: http://mcarthurgfx.com/blog/article/4-ways-functions-mess-with-this – pencilCake
Y este también es bastante explicativo: Invocación de función en JavaScript - contextos revisitados - http://msmvps.com/blogs/luisabreu/archive/2009/08/24/function-invocation-in-javascript-contexts-revisited.aspx – pencilCake