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 相关文章推荐
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
JavaScript实现瀑布流布局
Jun 28 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
js实现简单选项卡功能
Mar 23 Javascript
vue+webpack 更换主题N种方案优劣分析
Oct 28 Javascript
原生javascript如何实现共享onload事件
Jul 03 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
微信小程序用户登录和登录态维护的实现
Dec 10 Javascript
react国际化react-intl的使用
May 06 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
使用php实现截取指定长度
2013/08/06 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
python实现360的字符显示界面
2014/02/21 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
深入了解python中元类的相关知识
2019/08/29 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
Python截图并保存的具体实例
2021/01/14 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
学生自我评语大全
2014/04/18 职场文书
2015年林业工作总结
2015/05/14 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis