如何在循环中动态创建新对象

时间:2017-04-26 18:22:03

标签: javascript

我正在学习JS课程,我想知道是否可以在循环中创建新变量?

我的例子:

的JavaScript

var films = {
  init: function (titre, annee, real) {
    this.titre = titre;
    this.annee = annee;
    this.real = real;
  },
  decrire: function () {
    var description = this.titre + "(" + this.annee + ")" + ", réalisé par " + this.real;
    return description;
  }
};



for (var i = 0; i < 4; i++) {
  var film = Object.create(films);
  film = prompt("Film:");
  annee = prompt("année");
  real = prompt("real");
}

films.forEach(function (film) {
  console.log(decrire());
}

我想在循环的每个回合创建新对象,并询问人们标题,年份和实现者,最后在控制台中打印它。 但是对于我的最后一行代码,我得到了类似的东西:

  参数列表

之后的

Uncaught SyntaxError:missing)

我的网页并没有要求我放一部新电影= /我不知道怎么弄清楚这个。 我在哪里可以找到关于此的一些文档?

2 个答案:

答案 0 :(得分:0)

缺少)关闭forEach功能。应该是

films.forEach(function (film){
  console.log(decrire());
});

编辑:您的代码也包含其他几个错误。抱歉忽略。

是的,您可以在循环中创建新变量。 我修改了你的代码,就像你可能想要它一样。请参阅代码注释。

// It's recommened to use Capitalized name for a "class" like here.
// This is NOT very good Javascript, but it works.
var Film = {
  init: function (titre, annee, real) {
    this.titre = titre;
    this.annee = annee;
    this.real = real;
  },
  decrire: function () {
    var description = this.titre + "(" + this.annee + ")" + ", réalisé par " + this.real;
    return description;
  }
};

// Initial array of films
var films = [];

for (var i = 0; i < 4; i++) {
  var film = Object.create(Film);

  // Save user inputs
  var titre = prompt("Film:");
  var annee = prompt("année");
  var real = prompt("real");

  // Run init function for created 
  film.init(titre, annee, real);

  // Save it to array of films
  films.push(film);
}

films.forEach(function (film) {
  // Run decrire() of each film in the array
  console.log(film.decrire());
});

答案 1 :(得分:0)

你没有关闭你的forEach:

films.forEach(  function (film){
    console.log(   decrire()   );
} );

编辑:承认,它只回答错误,而不是问题的其余部分