在一天结束时,我需要一个javascript函数来帮助我创建:
object question[0]= {questionText ,Answer[{answerText1, icon1}, answerText2, icon2},.....]}
我基本上有一个问题类,其中包含问题文本和任意数量的答案。问题是有序的。答案是一个自己的类,每个答案都有任意数量的答案,答案文本和图标。我不确定我是否正确地宣布了它,但这是我尝试创建此问题对象的函数:
function Question(qText, A) {
this.questionText = qText;
this.Answer = A;
}
function Answer(aText, icon) {
this.answerText = aText;
this.icon= icon;
}
var AnswerForQuestion1[0]= new Answer {"Male", MaleIcon}
var AnswerForQuestion1[1]= new Answer {"Female", FemaleIcon}]
var question[0]= new Question ("What's your Gender?",AnswerForQuestion1)
但这会产生不必要的答案变量。在不知道问题的答案有多大的情况下,如何创建一个可以立即创建问题的函数?
答案 0 :(得分:0)
您不需要实际初始化变量,而不是主根变量:
var questions = [
new Question ("What's your Gender?", [
new Answer("Male", MaleIcon),
new Answer("Female", FemaleIcon)
]),
new Question(...)
];
答案 1 :(得分:0)
您每次使用var
重新定义数组的变量?此外,您始终不一致地使用无效语法。
无论如何,你认为面向对象很好。我想是这样的:" final"你试图看到的结果提供了一个问题和一些答案。将它作为一个对象似乎是合适的,称之为QA
对象。这样,您基本上可以创建该业务逻辑特定对的实例。你可以轻松地传递这些实例。可以理解的。
function QA(question, answerCollection) {
this.question = question;
this.answerCollection = answerCollection;
};
QA.prototype.getQuestion = function() { }; //whatever
考虑进一步实施(你已经想到这一点,跳过第一步),我想到某种对象来表示问题的实例,以及某种对象来表示答案的实例(这些被称为实体)。另外,考虑到未来,我可能想要某种集合界面(它实际上充当数据收集工厂)来创建'回答集合:
/**
* Entities
*/
function Question() {
this.question = this.icon = NULL;
};
Question.prototype.setQuestion = function() { }; //whatever
function Answer() {
this.answer = this.icon = NULL;
};
Answer.prototype.setAnswer = function() { }; //whatever
/**
* Factory
*/
var AnswerCollectionFactory = {};
AnswerCollectionFactory.build = function(arr) {
var tmpAswer, collection = []
for(var key in arr) {
tmpAswer = new Answer();
tmpAswer.setAnswer(arr[key].answer);
tmpAswer.setIcon(arr[key].icon);
collection.push(tmpAnswer);
}
return collection;
};
遵循这个/类似的实现,可读&可移植代码实例化你想要的东西:
var question = new Question;
question.setQuestion('What\'s your gender?');
question.setIcon(); //whatever
var answerCollection = AnswerCollection.build([
{answer: ..., icon: ...},
{answer: ..., icon: ...}
]);
new QA(question, answerCollection); //there you ago
在一天结束时:如果您不需要使用用户定义的对象& new
,您可以使用更简单的对象解决方案:
var qa = {
question: {question: ..., icon: ...},
answers: [
{answer: ..., icon: ... },
{answer: ..., icon: ... }
]
};