У меня вопрос о наследовании объектов с 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 может выполнять множественное наследование. –
Хорошо, мой пример делает смысл? Я уверен, что могу сделать это по-другому, но Im доволен этим ... –
Это имеет смысл, но я мало знаю о наследовании в JavaScript. –