我正在编写一个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[]
然后最终运行程序并从数组中调用每个函数。
答案 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