在我正在进行的模拟中,我将有一个Element类,我将用params调用该元素的属性(熔化和沸腾温度,与其他元素反应的规则,颜色,密度等) 。)创建基本类型的元素(水,氧,碳等)。从这些,我只想从水,氧和碳模板创建新的“原子”。我想知道是否有办法使用构造函数(Element)来创建一个新的构造函数(如Water)?例如,我希望能够做到这样的事情。
var Element = function(/* params */) {
// common element properties and basic functions
}
var Water = new Element(); // create the new element
var WaterAtom = new Water(); // create the atom (an instance of the element)
// draw the atom, manipulate it, react with other atoms, etc.
我基本上问,构造函数可以创建另一个构造函数吗?我希望这样,所以我不必创建大量的.prototype
代码来扩展基本的Element类。
答案 0 :(得分:1)
您可以编写一个实用程序函数来生成Element
的子类:
function Element() {}
function subElement() {
function SubElement() {}
SubElement.prototype = Object.create(Element.prototype);
return SubElement;
}
var Water = subElement();
var waterAtom = new Water();
答案 1 :(得分:0)
我认为你在寻找的是
function Element(…) {
// init properties that all elements share
}
Element.prototype.… = function(…) { … }; // add all methods of elements
Element.makeType = function(rules) {
function ElementType(…) {
Element.call(this, …);
}
ElementType.prototype = Object.create(Element.prototype);
ElementType.prototype.constructor = ElementType;
ElementType.prototype.rules = rules;
return ElementType;
};
以便您可以像
一样使用它var Water = Element.makeType(function(…) {
// do whatever makes water special
});
var drop = new Water(…);