I'm creating a quiz interaction, and after a few days of research I'm trying to determine the best way to declare my objects. There's a master anonymous function (which could be called Quiz, but there is no requirement for public methods) that contains a class definition for Scenarios that contain a class definition for Questions:
Quiz > Scenario > Questions > Answers (eventually)
I prefer the Immediately-Invoked ('iffy') model to enforce private/public, but I also require multiple instances, so I believe I should be using prototypes? I've placed the class definitions as private as they are only used by this interaction. Is this the best model?
JsFiddle: http://jsfiddle.net/QtCm8/
(function(quizData) {
var scenarios = [];
for(var s=0;s<quizData.scenarios.length;s++) scenarios.push(new Scenario(quizData.scenarios[s]));
function Scenario(scenarioData) {
console.log("New Scenario: " + scenarioData.title);
var questions = [];
for(var q=0;q<scenarioData.questions.length;q++) questions.push(new Question(scenarioData.questions[q]));
function Question(questionData) {
console.log("New Question: " + questionData.text);
// Repeat pattern for future answers object
}
}
})({
scenarios: [
{
title: 'Scenario1'
,questions: [
{
text: 'What is 1+1?'
}
,{
text: 'What is 2+2?'
}
]
}
]
});