对于我的编码分配,我的任务是创建一个可以从固定数量的类中生成X个对象的函数。但是在生成对象时,我想将这些对象存储在数组中。我将如何在Javascript中执行此操作?
答案 0 :(得分:1)
与两个对象完全相同。只需使用数组的长度来选择随机元素,并使用循环执行X次操作:
/* Class definitions */
function Animal(){ var a = document.createElement('div'); a.className = 'animal'; return a}
function Horse(){ var a = new Animal(); a.className += ' horse'; return a }
function Pig(){ var a = new Animal(); a.className += ' pig'; return a }
function Rat(){ var a = new Animal(); a.className += ' rat'; return a }
/* Variable definitions */
var animals = ['Horse', 'Pig', 'Rat'],
output = document.getElementById('output'),
numberOfDraws = 5,
res = [];
/* Auxiliary functions */
// Returns a random element from a given array
function pickRandom(arr){
return arr[ Math.floor( Math.random()*arr.length ) ];
}
/* Main script */
// Pick a random object 5 times, store it in 'res' and show it
for(var i = 0; i < numberOfDraws; i++){
res.push( eval('new ' + pickRandom(animals) + '()') );
output.appendChild( res[i] );
}
.animal{float:left;padding:40px;background-size:100%}.horse{background-image:url(https://pbs.twimg.com/profile_images/587037647966613504/Mk5oEKsb.png)}.pig{background-image:url(https://33.media.tumblr.com/avatar_c2b180faa484_128.png)}.rat{background-image:url(http://38.media.tumblr.com/avatar_614c66cef635_128.png)}
<pre id="output"></pre>
编辑:要获取班级的实例,您可以eval
班级名称。请参阅上面的演示。