先贴出代码,看看执行结果会是什么?

function ShowMsg() {
//函数1
  this.sure = function () {
alert("ok");
};

//函数2
this.sure = function (msg) {
alert(msg);
};
} var showMsg = new ShowMsg();
showMsg.sure();

看上面的代码,本以为是两个方法重载的函数,执行后会弹出"ok"的信息。实则却弹出一个空字符的框。

原来定义javascript函数时,函数名是函数对象的标识,参数数量只是这个函数的属性。靠定义参数数量不同的函数实现重载是行不通的。

上面代码执行时,javascript通过函数名找到对应的函数对象,然后根据函数按照定义时的参数和表达式参数列表按顺序匹配,多余的参

数舍去,不够的参数按undefined处理,然后执行函数代码。

javascript重载函数需要通过函数代码判断参数值和类型实现,arguments是javascript里的一个内置对象,包含了调用时传递的实际参

数;上面的代码可以改为:

function ShowMsg() {
  this.sure = function () {
    if(arguments.length==0){
    alert("ok");
}
    if(arguments.length==1){
   if(arguments[0].constructor ==String){
      alert(arguments[0]);
   }
   }
};
} var showMsg = new ShowMsg();
showMsg.sure();

执行后会弹出"ok"。

												

最新文章

  1. 关于SQL储存过程中输出多行数据
  2. 唯美!分享8款响应式的 WordPress 餐厅主题
  3. css 中的度量单位
  4. TKinter布局之grid 网格布局
  5. Oracle composite index column ordering
  6. ubuntu 14.04 允许root 登录
  7. C#递归搜索指定目录下的文件或目录
  8. os x 10.10 測试版系统下载 swift语言学习资料下载
  9. 基于SIM 卡卡基不同制作工艺的研究
  10. vagrant 入门1
  11. Java基础之集合:概览
  12. 强大的修图app--美图秀秀
  13. 移植 DeepinQQ 到 Fedora 中
  14. require.js实现js模块化编程(一)
  15. 学习C++模板,初体验
  16. jquery获取一组文本框的值
  17. 【LeetCode每天一题】Permutation Sequence(排列序列)
  18. python写的计算器
  19. 在TOMCAT下配置工程的默认访问设置(转)
  20. mysql varchar存储最大

热门文章

  1. javascript中var that=this
  2. PEP 8 – Style Guide for Python Code
  3. MyBatis配置文件mybatis-config.xml
  4. JAVA数据结构--冒泡排序
  5. BZOJ - 1257 分块 详解
  6. DictionaryHelper2
  7. n个骰子的和,组成数字m的可能
  8. vm12下Centos6安装mysql5.7
  9. Python学习 day06
  10. Android Zygote进程是如何fork一个APP进程的