如何在Javascript中单独向类添加函数

如何在Javascript中单独向类添加函数,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,我有一个文件如下所示: cars.js: 现在,我想在文件中分离它们以组织我的代码: saab.js volvo.js cars.js 我该怎么做 附言: extends(classsaab extends Cars)的问题是,我现在需要调用new Saab()或new Volvo(),而这不是我想要的,我想调用new Cars()一种奇怪的方法,但实现这一点的唯一方法是使用ES6之前的技术。即扩展原型 // volvo.js Cars.prototype.Volvo = function()

我有一个文件如下所示:

cars.js:

现在,我想在文件中分离它们以组织我的代码:

saab.js

volvo.js

cars.js

我该怎么做

附言:

extends
classsaab extends Cars
)的问题是,我现在需要调用
new Saab()
new Volvo()
,而这不是我想要的,我想调用
new Cars()
一种奇怪的方法,但实现这一点的唯一方法是使用ES6之前的技术。即扩展原型

// volvo.js
Cars.prototype.Volvo = function() {
  return 'Volvo';
};

// saab.js
Cars.prototype.Saab = function() {
  return 'Saab';
};

从技术上讲,这就是类语法“幕后”发生的情况。因此,如果不在类声明中设置所有方法,就必须这样做。

这是一种奇怪的方法,但实现这一点的唯一方法是使用ES6之前的技术。即扩展原型

// volvo.js
Cars.prototype.Volvo = function() {
  return 'Volvo';
};

// saab.js
Cars.prototype.Saab = function() {
  return 'Saab';
};
从技术上讲,这就是类语法“幕后”发生的情况。因此,如果不在类声明中设置所有方法,就必须这样做。

common.js 沃尔沃js Saab.js impl.js 在HTML页面中,按以下顺序导入JS:

 <script src="common.js"></script>
 <script src="Volvo.js"></script>
 <script src="Saab.js"></script>
 <script src="impl.js"></script> <!-- where  use API -->

common.js 沃尔沃js Saab.js impl.js 在HTML页面中,按以下顺序导入JS:

 <script src="common.js"></script>
 <script src="Volvo.js"></script>
 <script src="Saab.js"></script>
 <script src="impl.js"></script> <!-- where  use API -->



Hmm,真是奇怪的方法。你为什么要分班?如果您想分割代码,请使用模块、继承、组合等等。。。不是一个类。目前,我使用模块,但我想拥有构造函数的优势。我想我找错方向了。不过谢谢你的洞察力。
Cars
类没有意义。我想你想要的是一个模块,它简单地“捆绑”了汽车模型的所有构造函数。这看起来像是从“/Volvo.js”导出{defaultasvolvo}嗯,真是奇怪的方法。你为什么要分班?如果您想分割代码,请使用模块、继承、组合等等。。。不是一个类。目前,我使用模块,但我想拥有构造函数的优势。我想我找错方向了。不过谢谢你的洞察力。
Cars
类没有意义。我想你想要的是一个模块,它简单地“捆绑”了汽车模型的所有构造函数。这看起来像是从“/Volvo.js”导出{defaultasvolvo}啊哈,酷。我试图解决的问题是,在我的课堂上,我有大约150个函数(“汽车模型”)。还有什么其他想法我可以如何组织代码吗?@BobvanLuijt绝对有。任何类都不应该有150个函数。那个班做得太多了。这些函数是否共享一个公共线程?就像在中一样,它们的功能非常相似,但事情有点不同吗?或者你真的把它们当作“模型”(构造器)使用?我真的在努力避免反模式。显然,150太多了,但从可读性的角度来看,这有点合乎逻辑。我想我必须——事实上——弄清楚如何将我的具体问题转化为构造函数。谢谢你的见解。@BobvanLuijt这一切都取决于你如何使用它。也许可以尝试一种更基于合成的方法。不管怎样,我希望我帮了你,祝你好运;)是的。谢谢mateAha,酷。我试图解决的问题是,在我的课堂上,我有大约150个函数(“汽车模型”)。还有什么其他想法我可以如何组织代码吗?@BobvanLuijt绝对有。任何类都不应该有150个函数。那个班做得太多了。这些函数是否共享一个公共线程?就像在中一样,它们的功能非常相似,但事情有点不同吗?或者你真的把它们当作“模型”(构造器)使用?我真的在努力避免反模式。显然,150太多了,但从可读性的角度来看,这有点合乎逻辑。我想我必须——事实上——弄清楚如何将我的具体问题转化为构造函数。谢谢你的见解。@BobvanLuijt这一切都取决于你如何使用它。也许可以尝试一种更基于合成的方法。不管怎样,我希望我帮了你,祝你好运;)是的。感谢Mate只是好奇:为什么要将原型分配给
Cars.fn
而不是直接使用
Cars.prototype
意义重大:-)@MikeC:看来我们的朋友想写OOPJs@AbdennourTOUMI哎呀;-)只是好奇:为什么要将原型分配给
Cars.fn
而不是直接使用
Cars.prototype
意义重大:-)@MikeC:看来我们的朋友想写OOPJs@AbdennourTOUMI哎呀;-)
// volvo.js
Cars.prototype.Volvo = function() {
  return 'Volvo';
};

// saab.js
Cars.prototype.Saab = function() {
  return 'Saab';
};
function Cars(){
    this.name='car'; 
    return this;
}
Cars.fn=Cars.prototype ;
Cars.fn.volvo=function(){
     this.name='Volvo';
     return this.name;
}
Cars.fn.saab=function(){
     this.name='Saab';
     return this.name;
}
 var c1=new Cars();
 c1.volvo();
 //......
 <script src="common.js"></script>
 <script src="Volvo.js"></script>
 <script src="Saab.js"></script>
 <script src="impl.js"></script> <!-- where  use API -->