Buenas a todos.
Estoy intentando aprender a programar Javascript orientado a objetos, y pese a entender qué es OO, me está costando el tema de los privates, públicos y demás (si alguien conoce una web que sea buena explicándolo lo agradecería, hasta ahora sólo he encontrado jeroglíficos ¬¬)
Problema:
Quiero una clase para controlar los layers de una página; a la izquierda opciones y a la derecha contenido. Al clickear una opción se hace un fadeOut en un layer de la derecha y, al acabar, un fadeIn al que se ha pulsado.
Además, a la opción pulsada le agrego un CSS para indicar que es la activa.
(Advierto de que seguramente es una chapuza...

)
Código:
Código:
function faqControl ($firstSelector, $firstLayer) {
// METHODS
this.switchOption = function ($newSelector, $newLayer) {
if(this.switchAdmitted()) {
this.changeLayer($newLayer);
this.unselectSelector();
this.$currentSelector = $newSelector;
this.selectSelector();
}
};
// Este metodo solo es para asegurarme de que mostramos una capa a la vez.
this.switchAdmitted = function () {
if(this.state != 'ready')
return false;
else
return true;
}
this.unselectSelector = function () {
this.$currentSelector.removeClass('selected');
};
this.selectSelector = function () {
this.$currentSelector.addClass('selected');
};
this.changeLayer = function ($newLayer,callback) {
this.state = 'changing';
this.$currentLayer.fadeOut('slow', function () {
$newLayer.fadeIn('slow', function () {
this.state='ready';
});
});
this.$currentLayer = $newLayer;
};
this.showLayer = function () {
this.$currentLayer.fadeIn('fast');
};
//Constructor. Given objects will be the first elements shown.
this.$currentSelector = $firstSelector;
this.$currentLayer = $firstLayer;
this.state = 'ready';
this.selectSelector();
this.showLayer();
}
Los problemas los tengo en la llamada a funciones desde los callbacks de fadeIn y fadeOut. Creo que tiene algo que ver con los Scopes (áreas de trabajo de las variables, ¿verdad?), y con la forma de declarar variables públicas y privadas. Pero todo esto ahora mismo me es muy confuso porque está muy raramente explicado por ahí fuera.
Gracias por todas las colaboraciones de antemano ;D