js实现方法重载
2017-11-27 09:17
281 查看
高级编程语言中基本上有会用到方法的重载比如如下代码
但是如果在js中这样写就会被覆盖,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系
在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,比如无想把时间字符
串格式化,如果按照上面那种写法应该是如下代码
可是你在调用的时候会发现完全无法重载,所以我们可以借助arguments对象来变相的实现方法重载,
修改后代码如下:
这时候再试下就可以了:
str.getDate()//返回yyyy-MM-dd HH:mm:ss格式
str.getDate("yyyy-MM-dd")//返回yyyy-MM-dd格式
public decimal add(decimal d1, decimal d2) { return d1 + d2; } public decimal add(string d1, string d2) { decimal res = 0; try { res= decimal.Parse(d1) + decimal.Parse(d2); } catch (Exception e) { throw new Exception("字符串转化decimal类型失败" + e.Message); } return res; }
但是如果在js中这样写就会被覆盖,因为函数定义时的参数个数和函数调用时的参数个数没有任何关系
在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,比如无想把时间字符
串格式化,如果按照上面那种写法应该是如下代码
String.prototype.getDate = function () { var res = /\d{13}/.exec(this); if (res != null) var date = new Date(parseInt(res)); else var date = new Date(this) return date.format("yyyy-MM-dd HH:mm:ss"); } String.prototype.getDate = function (format) { var res = /\d{13}/.exec(this); if (res != null) var date = new Date(parseInt(res)); else var date = new Date(this) return date.format(format); }
可是你在调用的时候会发现完全无法重载,所以我们可以借助arguments对象来变相的实现方法重载,
修改后代码如下:
String.prototype.getDate = function () { var res = /\d{13}/.exec(this); if (res != null) var date = new Date(parseInt(res)); else var date = new Date(this) if (arguments.length == 1) {//判断参数个数 return date.format(arguments[0]);//arguments[0]获取第一个参数 } return date.format("yyyy-MM-dd HH:mm:ss"); }
这时候再试下就可以了:
str.getDate()//返回yyyy-MM-dd HH:mm:ss格式
str.getDate("yyyy-MM-dd")//返回yyyy-MM-dd格式
相关文章推荐
- JS模拟实现方法重载示例
- 在js中如何实现方法重载?以及函数的参数问题
- js面向对象编程之如何实现方法重载
- 妙用缓存调用链实现JS方法的重载
- 妙用缓存调用链实现JS方法的重载
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- js实现调用方法(函数)时可动态传入不同参数个数、模拟实现方法(函数)重载
- JS重载实现方法分析
- [置顶] 在js中如何实现方法重载?以及函数的参数问题
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- js面向对象编程之如何实现方法重载
- 每日一个知识点--JS实现方法重载
- js面向对象编程:如何实现方法重载
- 妙用缓存调用链实现JS方法的重载
- JS类中定义原型方法的两种实现的区别
- 仿服务器端脚本方式的JS模板实现方法
- Dom4j递归解析XML实现JS的getElementsByName类似方法
- 不用AJAX实现前台JS调用后台C#方法(小技巧)
- JS类中定义原型方法的两种实现的区别
- 不用AJAX实现前台JS调用后台C#方法(小技巧)