在JavaScript中实现多个构造函数

在JavaScript中实现多个构造函数,javascript,Javascript,我正在开发一个处理有理数的程序,它可以表示为: 一小部分 素因子分解 我想到的是建立一个单一的类Rational,它可以表示给定分数或素因子分解的有理数。从这个意义上说,我正在寻找类似于为这个类为每个上下文提供多个构造函数的东西。我最初的感觉是使用static块来生成缺少的信息,如下所示: const primes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]; 阶级因素{ 构造函数(powers、remainderNum、remainderDen)

我正在开发一个处理有理数的程序,它可以表示为:

  • 一小部分
  • 素因子分解
我想到的是建立一个单一的类
Rational
,它可以表示给定分数或素因子分解的有理数。从这个意义上说,我正在寻找类似于为这个类为每个上下文提供多个构造函数的东西。我最初的感觉是使用
static
块来生成缺少的信息,如下所示:

const primes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47];
阶级因素{
构造函数(powers、remainderNum、remainderDen){
//幂是上面列出的那些素数的幂的数组
//余数是余数的一部分(如果没有,则仅为{1,1})
这个。权力=权力;
此项。剩余={
num:remainderNum,
书房:剩余书房
};
}
}
类分数{
构造函数(num,den){
this.num=num;
this.den=den;
}
}
类理性{
构造函数(因子,分数){
这个系数=系数;
这个。分数=分数;
}
//通过因子实例化
静态因素{
函数(因子){
让幂=因子。幂;
设num=factors.rements.num;
设den=factors.remains.den;
for(设i=0;i0){
num*=Math.pow(素数[i],幂[i]);
}否则{
den*=Math.pow(素数[i],Math.abs(幂[i]);
}
}
返回新分数(num,den);
}
返回新的有理数(factors,getFraction(factors));
}
//通过分数实例化
静态分数(分数){
函数系数(分数){
设幂=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
设num=fraction.num;
设den=分数.den;
for(设i=0;irem${ratio2.factors.rements.num}/${ratio2.factors.rements.den}`)“最佳方法”很快转变成了人们的看法。我不会把函数命名为类;它们只是工厂,但除此之外,如果我在IRL看到这种方法,我不会有任何问题。您的代码很好,除了工厂作为
fromFactors
fromfract
看起来更好,而不是
new Rational
,您真的应该使用
new this
来支持扩展。