码迷,mamicode.com
首页 > 其他好文 > 详细

模拟重载函数

时间:2015-10-03 20:44:55      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

    小编以前写wp的,所有习惯了有函数的重载,根据参数的不同,而可以调用名称相同的函数,可是js中的function对象也是以属性的形式出现的,在一个对象中增加与已有的function同名的function时,旧的function对象则会被覆盖。= =。

     那么怎么让js也可以有这种特性呢?js中,每个函数内部,都有arguments对象(包含函数被调用时的实际参数)。

     额 ,在这里补充一点,js如果在调用时函数多于方法定义时的形参,则多余的函数会被省掉。对于这里的arguments对象,它的原型是Object.prototype,但它有个和数组一样的属性length,同时实参可以通过[]操作符来获取。

function sayHi(){
switch(arguments.length){
case 0:
return "Hi";

case 1:
return "Hi,"+arguments[0];

case 2:
return (arguments[1]=="cn" ? "你好,":"Hi,")+arguments[0]
};
}

sayHi();  //Hi
sayHi("Fnncat"); //Hi,Fnncat
sayHi("Fnncat","cn");//你好,Fnncat

callee是arguments对象的一属性,其值是当前正在执行的function对象。它的作用是使匿名function可以被递归调用。

     

模拟重载函数

标签:

原文地址:http://www.cnblogs.com/fnncat/p/4853781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!