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 相关文章推荐
location.href语句与火狐不兼容的问题
Jul 04 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
May 14 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
Angular工具方法学习
Dec 26 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
ES6中数组array新增方法实例总结
Nov 07 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
mpvue中使用flyjs全局拦截的实现代码
Sep 13 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 Javascript
vue中路由跳转不计入history的操作
Sep 21 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
基于Python的PIL库学习详解
2019/05/10 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
建议书的格式
2014/05/12 职场文书
作风建设年活动总结
2014/08/27 职场文书
竞选学委演讲稿
2014/09/13 职场文书
六五普法宣传标语
2014/10/06 职场文书
企业计划生育责任书
2015/05/09 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
图文详解matlab原始处理图像几何变换
2021/07/09 Python