2017-04-26 90 views
-1

我跟隨一個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()); 
} 

我想在循環的每一輪創建新的對象,並要求人們爲標題,年,realisators,終於在打印安慰。 但我得到這樣的事情對我的代碼最後一行:

Uncaught SyntaxError: missing) after argument list

而且我的網頁上沒有要求我把一個新的電影= /我不知道怎麼算出來。 我在哪裏可以找到關於此的一些文檔?

回答

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()); 
}); 
+0

謝謝您的幫助不休息! =) – Kapu

+0

但我不明白的東西。如果我們在循環的每一圈創建相同的對象:'電影'。爲什麼下一回合不會寫完先前的對象?: 回合1:電影=分割,2017,... 回合1:電影=內出,2016,.... 對我來說,循環創建總是相同的物體= /或自動拍攝電影1,電影2等? – Kapu

0

你不關你的forEach:

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

編輯:承認,它只能回答錯誤,問題