如何在Javascript中单独向类添加函数
我有一个文件如下所示: cars.js: 现在,我想在文件中分离它们以组织我的代码: saab.js volvo.js cars.js 我该怎么做 附言:如何在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()
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 -->