JavaScript 的方法重载效果


Posted in Javascript onAugust 07, 2009

在 JavaScript 的方法内,有个叫做 arguments 的变量数组,它是只读的,所有实际传入的参数变量都
放在了里面,通过它,我们可以对传入的参数进行类型检查,从而实现重载的效果。
判断一个变量的类型有两种方法。
1,用 typeof 语句:

function check(){ 
if(typeof arguments[0] == 'string') 
alert('你传入的参数是个字符串'); 
else if(typeof arguments[0] == 'number') 
alert('你传入的参数是个数字'); 
}

2,用所有 JavaScript 变量都带有的一个属性 constructor,这个属性指向用来构造该变量的构造函数:
function check(){ 
if(arguments[0].constructor == String) 
alert('你传入的参数是个字符串'); 
else if(arguments[0].constructor == Number) 
alert('你传入的参数是个数字'); 
}

对照表:
typeof constructor
---------------------------
string String
number Number
object Object
function Function
boolean Boolean
object Array
object User
通过这个对照表可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判
断。
首先我们定义一个用来判断参数类型和个数的方法
function checkArgs(types,args){ 
// 检查参数个数 
if(types.length != args.length){ 
return false; 
} 
// 检查参数类型 
for(var i=0; i<args.length; i++){ 
if(args[i].constructor != types[i]){ 
return false; 
} 
} 
return true; 
}

我们定义一个方法对上面的方法进行应用
function show(){ 
// 处理参数是一个字符串的调用 
if(checkArgs([String],arguments)){ 
alert(arguments[0]); 
} 
// 处理参数是一个字符串和一个数字的调用 
else if(checkArgs([String,Number],arguments)){ 
var s = ''; 
for(var i=0; i<arguments[1]; i++){ 
s+=arguments[0]; 
} 
alert(s); 
// 参数不符合要求时,给予提示 
}else{ 
alert('不支持的参数'); 
} 
}

当我们定义的 JavaScript 方法对参数要求比较严格时,就可以用这样的方式来编写代码。
Javascript 相关文章推荐
jQuery自定义事件的简单实现代码
Jan 27 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
js库Modernizr的介绍和使用
May 07 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
Jul 22 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
Mar 04 Javascript
javascript贪吃蛇游戏设计与实现
Sep 17 Javascript
JQuery 小练习(实例代码)
Aug 07 #Javascript
js正确获取元素样式详解
Aug 07 #Javascript
JavaScript 乱码问题
Aug 06 #Javascript
jquery ui dialog里调用datepicker的问题
Aug 06 #Javascript
jquery select(列表)的操作(取值/赋值)
Aug 06 #Javascript
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 #Javascript
javascript Array.remove() 数组删除
Aug 06 #Javascript
You might like
PHP memcache扩展的三种安装方法
2009/04/26 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
培训演讲稿范文
2014/01/12 职场文书
实习生岗位职责
2014/04/12 职场文书
初中班主任评语
2014/04/24 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
小学优秀班主任材料
2014/12/17 职场文书
指导老师鉴定意见
2015/06/05 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书