Javascript:如何创建一个函数,该函数可以从固定数量的类中生成X数量的对象
Javascript: How do I create a function that can generate an X amount of objects drawing from fixed amount of classes?
对于我的编码任务,我的任务是创建一个函数,该函数可以从固定数量的类中生成X数量的对象。但是在生成对象时,我想将这些对象存储在数组中。我将如何在Javascript中做到这一点?
与处理两个对象几乎相同。只需使用数组的长度来选择一个随机元素,并使用循环来执行 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
类名。请参阅上面的演示。
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象