关于JS多态中的重载问题分析

来源:互联网 发布:并发编程研究内容 编辑:程序博客网 时间:2024/05/22 19:08

在一些后台的面向对象的编程语言中,例如Java 、c#等里面出现的函数多态的重载的概念都是指的是,方法名相同,但是参数参数不同,叫做方法的重载。
上代码帮助理解。

public void sum(int num1,int num2){    //CODE}public void sum(int num1){    //CODE}public void sum(int num1,string str){    //CODE}sum(12,23); \\执行第一个函数sum(12);  \\执行第二个函数sum(12,'zhufeng');  \\ 执行第三个函数

但是在JS中并没有严格意义上的重载,因为JS中如果方法名出现了重复,那么后来出现的将会覆盖前面的同名的方法,只能保留一个(和实参没有关系)。

但是JS中有所谓的重载(非严格意义上的重载):指的是,同一个方法,通过传递实参的不同(arguments)我们完成不同的功能,我们把这个也可以理解为重载
上代码帮助理解

function(num1,num2){    return num1+num2;}function(){    var total=null;    var ary =Array.prototype.slice.call(arguments);    return eval(ary.join('+'));}sum(20,20);sum(10,20,30);不管哪一次执行,都是第二个sum

综上所述,JS是面向对象编程语言,具有的类的封装、多态和继承。但但是,JS中的多态中没有严格意义上的重载,只有类似后台语言中的重载,并且是通过实参传递的不同个数,而实现类似重载的效果。。。

原创粉丝点击