在数组中存储函数调用

时间:2015-02-24 17:54:16

标签: javascript arrays

我正在编写一个javascript程序,我希望能够存储在数组中创建3D对象的函数调用。我想能够把

draw_cylinder(0,0,3,2);
draw_sphere(0,0,5,3);
draw_cone(17,0,7,3);
draw_cube(-1,-1,2, 1,1,3);

到数组shapes[]然后最终运行程序并从数组中调用每个函数。

2 个答案:

答案 0 :(得分:1)

我的第一个想法是:

var a = [];

a.push(function(){ draw_cylinder(0, 0, 3, 2); });
a.push(function(){ draw_sphere(0, 0, 5, 3); });
a.push(function(){ draw_cone(17, 0, 7, 3); });
a.push(function(){ draw_cube(-1, -1, 2, 1, 1, 3); });

for(var i = 0; i < a.length; i++){
    a[i]();
}

答案 1 :(得分:1)

您是否希望在数组或函数调用中使用具有这些特定值的函数?

只是打电话,你可以这样做:

var a = [];
a.push(draw_cylinder);
a.push(draw_sphere);
a.push(draw_cone);
a.push(draw_cube);

a[2](17,0,7,3);

如果你想要后者,你可以使用bind来理解这个功能:

var a = [];
a.push(draw_cylinder.bind(null, 0, 0, 3, 2));
a[0](); // will do whatever draw_cylinder(0,0,3,2) does

Currying函数 - http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html

绑定文档 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind