Since each THREE.Object3D
instance inherits from THREE.Object3D.prototype
, by setting THREE.Camera.prototype
this way, each THREE.Camera
instance will also inherit from THREE.Object3D.prototype
.
If you don't do this, THREE.Camera
instances won't inherit any properties assigned to THREE.Object3D.prototype
.
So, both parts are important:
By setting THREE.Camera.prototype
appropriately, new instances will inherit from THREE.Object3D.prototype
and these properties are shared by all instances.
By calling the "parent" constructor function you are initializing each instance with instance-specific data.
That said, setting the prototype like this is not the best approach. What if THREE.Object3D
expects arguments without which the constructor would not work?
A better approach is to create an empty object which inherits from THREE.Object3D.prototype
, since this is all you need:
THREE.Camera.prototype = Object.create(THREE.Object3D.prototype);
THREE.Camera.prototype.constructor = THREE.Camera;
Reference: Object.create