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 相关文章推荐
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
Mar 26 Javascript
JavaScript获取一个范围内日期的方法
Apr 24 Javascript
初识Javascript小结
Jul 16 Javascript
jQuery+ajax实现文章点赞功能的方法
Dec 31 Javascript
ES6学习教程之块级作用域详解
Oct 09 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
微信小程序图片左右摆动效果详解
Jul 13 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模板解析类实例
2015/07/09 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
javascript常用对话框小集
2013/09/13 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python实现单词翻译功能
2017/06/06 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
你对IPv6了解程度
2016/02/09 面试题
农救科工作职责
2013/11/27 职场文书
大学军训感言200字
2014/02/26 职场文书
农行心得体会
2014/09/02 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书