Javascript 方法重载

js是没有 “方法重载” 这个概念的,但其实可以通过判断 argumentslength 来模拟重载这个过程

运行结果:

差不多就是我们想要的效果,但这玩意一长串的 case 看起来不够优雅,于是找到了一个很巧妙的解决办法。

将这个方法在本地写了一下:

addMethod 有三个参数,第一个是需要绑定重载方法的对象,第二个事方法名字,第三个是具体方法。

在 “覆盖” 旧方法之前先保存这个旧方法,根据 arguments 的个数来选择执行旧方法还是新方法,新方法会变成更新方法的旧方法。

大致原理如图:

从最新的方法开始执行,根据 arguments 的长度来选择,假设最后全部不符合,那么会执行一个最旧的方法。

从一定的角度上实现了方法的重载。