JavaScript `this` em objetos em objetos?
Desculpe o título do post difuso, não consigo formular o nome correto em inglês para este pos
Por exemplo, eu tenho esse objeto:
var APP = {
a : 1,
b : function(){
return this.a;
}
}
Dessa forma, se eu ligar paraconsole.log ( APP.b() )
do quethis
fará referência à APP e o resultado será1
.
Mas como se conectar ao APP a partir do subobjeto? Exemplo
var APP = {
a : 1,
b : function(){
return this.a;
},
c : {
c1: function(){
return APP.a;
}
}
}
console.log ( APP.c.c1() ) // 1
Este exemplo funciona, mas é uma má idéia apontar diretamente para o APP. Por exemplo
APP2 = APP;
APP = null;
console.log ( APP2.b() ); // 1
console.log ( APP2.c.c1() ); // APP is undefined
UPD:
Eu tenho meia decisão: se eu declarar propriedadec
como um método:
c : function(){
var self = this;
return {
c1: function(){
return self.b();
},
c2: function(){}
}
}
Funcionará, mas devo chamar um método, mas não propriedade (colchetes demais):
console.log( APP2.c().c1() )
ao invés deconsole.log( APP2.c.c1() )