从函数中提取参数并将其用作逻辑语句

时间:2019-03-22 07:18:11

标签: javascript three.js

我正在探索THREE.js,并尝试使用不同的几何形状。因此,由于它具有多种几何结构,因此手动编写每一个都太无聊了。

我必须写这些行才能显示一个简单的多维数据集:

var material = new THREE.MeshNormalMaterial();
var boxGeometry = new THREE.BoxGeometry( 20, 20, 20 );
var box = new THREE.Mesh( boxGeometry, material );
box.position.set(-10, -10, 0);
scene.add( box );

要再说一个圆锥体,我只需要复制粘贴上面的行,然后将Box替换为Cone,就可以知道这是我计算机的工作(不是我的)。人类不是用来复制的:)

所以我想要一个通用class之后,我可以说:

var cube = new Shape('Cube', 20, 20, 20);
// or
var cone = new Shape('Cone', 20, 30);

&可能为我做其他所有事情,我可以从函数中提取arguments,但是该怎么办? 说如何将它们从字符串转换为逻辑语句?

1 个答案:

答案 0 :(得分:1)

使用括号表示法,您可以创建一个访问Three.<word>Geometry的函数,同时使用rest语法收集其他参数,然后将其传播到构造函数中:

function makeShape(shapeName, ...args) {
  var material = new THREE.MeshNormalMaterial();
  var boxGeometry = new THREE[shapeName + 'Geometry'](...args);
  var box = new THREE.Mesh( boxGeometry, material );
  box.position.set(-10, -10, 0);
  scene.add( box );
}

然后,只需调用该函数:

makeShape('Cube', 20, 20, 20);
makeShape('Cone', 20, 30);

如果您要将在函数中创建的内容分配给makeShape的调用者,只需在结尾return