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 相关文章推荐
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
JS模拟按钮点击功能的方法
Dec 22 Javascript
AngularJS 最常用的功能汇总
Feb 17 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
Dec 13 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
weex slider实现滑动底部导航功能
Aug 28 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
swiperjs实现导航与tab页的联动
Dec 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
谈一谈收音机的高放电路
2021/03/02 无线电
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python通过format函数格式化显示值
2020/10/17 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
公益活动策划方案
2014/01/09 职场文书
办公室主任先进事迹
2014/01/18 职场文书
六一儿童节活动策划方案
2014/01/27 职场文书
学习决心书范文
2014/03/11 职场文书
竞聘上岗演讲
2014/05/19 职场文书
网络销售员岗位职责
2015/04/11 职场文书
党支部评议意见
2015/06/02 职场文书
停发工资证明范本
2015/06/12 职场文书
运动会班级前导词
2015/07/20 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers