Vamos a ver como extraer un objeto en JavaScript en su versión de ECMAScript 5. Partimos de un fichero donde tenemos todas las funcionalidades y vemos que una de ellas es claramente un objeto que podemos extraer.
// main.js
function application(){
// {...}
let actualQuestionIndex = 0;
function isThereMoreQuestions() {
return actualQuestionIndex < questions.length -1;
}
function getQuestion() {
return questions[actualQuestionIndex];
}
function goToNextQuestion() {
if (isThereMoreQuestions()) {
actualQuestionIndex++;
}
}
function resetQuestions() {
actualQuestionIndex = 0;
}
// {...}
}
Como podemos ver esta parte de nuestro código se encarga de la navegación en nuestras preguntas, por ello vamos a sacarlo a un nuevo fichero. Haciendo que nuestra aplicación sea más modular y acepte cualquier tipo de navegación que cumpla estos requisitos mínimos.
//questionNavigator.js
var saberganar = saberganar || {};
saberganar.questionNavigator = function (questions){
let actualQuestionIndex = 0;
function isThereMoreQuestions() {
return actualQuestionIndex < questions.length -1;
}
function getQuestion() {
return questions[actualQuestionIndex];
}
function goToNextQuestion() {
if (isThereMoreQuestions()) {
actualQuestionIndex++;
}
}
function resetQuestions() {
actualQuestionIndex = 0;
}
return {
isThereMoreQuestions,
getNextQuestion
};
};
//main.js
var saberganar = saberganar || {};
saberganar.game = function(questionNavigator){
// {...}
let question = questionNavigator.getQuestion();
// {...}
}
De esta forma también evitamos ensuciar el namespace de nuestra aplicación
dejando por separado cada módulo namespace.game
y
namespace.questionNavigator