Javascript 方法重载
js是没有 “方法重载” 这个概念的,但其实可以通过判断 arguments 的 length 来模拟重载这个过程
运行结果:
差不多就是我们想要的效果,但这玩意一长串的 case 看起来不够优雅,于是找到了一个很巧妙的解决办法。
将这个方法在本地写了一下:
addMethod 有三个参数,第一个是需要绑定重载方法的对象,第二个事方法名字,第三个是具体方法。
在 “覆盖” 旧方法之前先保存这个旧方法,根据 arguments 的个数来选择执行旧方法还是新方法,新方法会变成更新方法的旧方法。
大致原理如图:
从最新的方法开始执行,根据 arguments 的长度来选择,假设最后全部不符合,那么会执行一个最旧的方法。
从一定的角度上实现了方法的重载。