答:同样的函数,不同样的参数个数。
《JS高级程序设计》里是提到过函数是没有重载的,ts中有重载。但是可以根据arguments的长度来实现重载。
最后定义的fn将前两个fn覆盖掉,所以没有达到重载的效果
虽然上述达到了想要的效果,但不是完美的实现js的重载。
高端实现js的重载做法是利用闭包。
参考资料: https://www.cnblogs.com/yugege/p/5539020.html
牙叔教程 简单易懂
它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。
类名: OverLoading
三个max方法
autojs代码
autojs运行日志
可以看到, 默认两个参数调用方法 max(double a, double b) ,
除非加上参数类型: overLoading["max(int,int)"]
我认为他是一个代理
运行日志
max方法, 没有调用任何OverLoading的max方法, 因为他没有打印参数类型,
我写的OverLoading类里面, 如果调用了max, 必定会打印参数类型
实例化类, 调用实例的方法
一个参数不行
四个参数不行
因为原始的类里面的参数是2个或者3个,
JavaAdapter要重写max方法, 也必须和原始类有同样的参数个数,
不能多, 也不能少
重载是不可能的, 这辈子都不可能重载,
参数又不支持类型,
就是 判断参数个数 这种东西, 才能维持的了生活这样子,
用了 prototype 感觉就像回家一样,
类方法个个都能用,操作又方便,我超喜欢酱紫!
手机: Mi 11 Pro
Android版本: 12
Autojs版本: 9.1.13
名人名言
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途