0

我是一名学习编码员,试图从问答应用程序中理解一些示例代码

在服务器端代码中,该Question对象有一个名为 的属性answers

var Question = new Schema({
    title: {type:String, required: true, trim:true},
    answers: [Answer],
    });

这是唯一一个answers被定义的地方,但它也在var question下面的for循环中以某种方式使用:

var question;
var answerController = Alloy.createController('answer');

exports.setQuestion = function(c, q){
      question = c.get('questions')[q];

for(var i = 0; i < question['answers'].length; i++){
        var answer = question['answers'][i],

answers是通过Question对象定义的,它是如何被使用的question

4

1 回答 1

0
  • c.get('questions')返回一个对象数组Schema
  • question = c.get('questions')[q];设置question为该数组的元素之一,因此它包含一个Schema对象。
  • 每个Schema对象都有两个属性:(title它包含一个对象)和answers,它包含一个 s 数组Answer
  • 因此,question现在指的是一个Schema对象,并且可以使用question.answersquestion['answers']访问它的Answer数组。

您没有向我们展示的是调用exports.setQuestion(). 该代码必须传递一个对象,该对象具有get()返回数组的方法Schemas。我不知道它们是从哪里弄来的。这都是系统的一部分,可能会跟踪已构建的整个问题列表。如果没有所有上下文,很难解释其中的一小部分。

您一直在问的问题表明对变量、对象和属性之间的差异存在根本性的误解。我认为你需要回到书本并更新你的知识。

于 2013-06-20T02:58:31.110 回答