有没有办法扩展三个JS对象?

时间:2012-06-12 14:51:06

标签: javascript oop inheritance three.js

我正在使用ThreeJS创建一个人们可以点击多维数据集的交互。但是,这些立方体在单击时表现不同(不同颜色的动画,以保持简单的想法)。

我的想法是创建THREE.Mesh对象的扩展类并添加我的自定义函数和属性。这有助于隔离多维数据集的不同行为并提供更清晰的代码。

我尝试使用John Resigs' function to extend classes,但它似乎只适用于最终扩展其“Class”类的类。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

有几种方法可以在Javascript中创建基于类的系统。 John Resig的“Class”很棒,但它不是Three.js使用的继承类型。

请注意the Cube class file行:

THREE.Geometry.call( this );

Javascript没有提供类继承的内置模型,所以除非你使用一个将继承引入类构造的库(比如John Resig),否则你必须明确地调用super方法。

如果你在课堂上调用:

,你的课将继承CubeGeometry
THREE.CubeGeometry.call( this );

您可能还希望将CubeGeometry设置为原型:

THREE.MyCubeGeometry.prototype = new THREE.CubeGeometry();
THREE.MyCubeGeometry.prototype.constructor = THREE.MyCubeGeometry;