2
我有一個關於Object.create對象繼承的問題。從2個對象繼承
我有兩個對象,應該像接口一樣。 Object3D
和Light
。 Object3D
在3D空間中呈現真實物體。它在太空中的地位,它應該有一些功能來改變這個位置。 Light
就是發光的一切。每一盞燈都有它的顏色。
// I have resons to use iif, dont bother with that ;)
var Object3D = (function() {
var Object3D = function() {
this.position = vec3.create();
};
return Object3D;
})();
var Light = (function() {
var Light = function() {
this.color = new Array(4);
};
return Light;
})();
現在,我想要另外兩個對象,這將是'類'。首先是AmbientLight
。 AmbientLight
沒有位置,因爲它只是發光無處不在。所以它從Light
繼承。另一個是PointLight
。 PointLight
是Light
,但它也具有位置,因爲它不會到處發光。它有一定的範圍。所以它也應該從Object3D
繼承。我該怎麼做?我可以合併Object.create的結果嗎?
var AmbientLight = (function() {
var AmbientLight = function() {
Light.call(this);
};
AmbientLight.prototype = Object.create(Light.prototype);
return AmbientLight;
})();
var PointLight = (function() {
var PointLight = function() {
Light.call(this);
Object3D.call(this);
this.range = 10.0;
};
// this isnt correct
// how to make it correct?
PointLight.prototype = Object.create(Light.prototype);
PointLight.prototype = Object.create(Object3D.prototype);
return PointLight;
})();
我不認爲JavaScript可以做多重繼承。 –
那麼我的例子是做出來的?我敢肯定,我可以做的另一種方式,但我很高興有這樣的產品...... –
這是有道理的,但我不知道很多關於在JavaScript中繼承。 [在JavaScript多重繼承/原型]的 –