浅谈Javascript中的函数重载实现
来源:互联网 发布:淘宝直通车素材库 编辑:程序博客网 时间:2024/06/05 16:19
其它面向对象语言如Java的一个常见特性是:能够根据传入的不同数量量或类型的参数,通过“重载”函数来发挥不同的功用。但是这个特性在Javascript中并没有被直接支持,可是有很多办法实现这一功能。
不管何种面向对象语,函数重载必须依赖两件事情,分别是:
1)判断传入参数数量的能力
2)判断传入参数类型的能力
第1件事情:Javascript判断传入参数数量
Javascript的每个函数都带有一个仅在这个函数范围内作用的变量——arguments,它是一个包含所有传给函数的参数的伪数组。为什么是伪数组?—— 你不能修改它,也不能用push来添加新元素等。但是你可以访问其中的元素,并且同时具有.length属性。有了length属性,我们就可以很方便的知道函数传入了几个参数。
function send( message, who ) {
if( arguments.length >= 2 ) {
console.log("你对" + who + "说:" + message);
}
else {
console.log("你对大家说:" + message);
}
}
第2件事情:Javascript判断传入的参数类型
如果我们在函数中并没有提供参数,那么message和who的值一定为'undefined'。我们可以使用typeof message = 'undefined'来判断是否传入了参数。
function send( message ) {
if( typeof message === 'undefined' ) {
console.log("ERROR:错误的信息内容");
}
else {
console.log("你说:" + message);
}
}
javascript中的类型检查我常常用两种方法来判断:
方法1:typeof 变量 == '类型名'。如下:
var x = 123;
typeof x == 'number' //true
x = '123';
typeof x == 'string' //true
但是,对于Array和Object对象,typeof之后的值是一样的,都为Object。即 typeof [] == type new Object(),如此当我们想要判断一个对象是否为数组或我们自定义的对象时,这种方法就显得有点不够好了。
方法2:利有构造函数来判断变量类型( 变量.constructor == 构造函数)
var num = 1, str = 'abcd', arr = [], obj = {}, tf = true, f = function(){};
用typeof对它们分别进行求值后,得到的结果分别是:number、string、 object、 object、 boolean、 function
如果分别调用它们的构造函 数,得到的结构分别是:Number、String、Array、Object、Boolean、Function
了解了上面两件事情(变量个数、变量类型)之后,我们就可以创造出属于自己的Javascript重载函数了。
本文只起抛砖引入的作用,具体如何利用,全靠个人发挥。
- 浅谈Javascript中的函数重载实现
- JavaScript 中的函数重载
- 浅谈C++中的函数重载
- Javascript实现函数重载
- javascript-arguments实现函数重载
- JavaScript的重载函数实现
- JavaScript 利用arguments对象实现函数重载
- 浅谈PHP5中的重载
- 浅谈JavaScript中的函数作用域
- 浅谈C++中用函数重载实现类型转换
- c++中的输入输出流重载函数实现
- javascript中的trim()函数实现
- javascript模拟函数重载
- javascript 函数重载
- javascript 模拟函数重载
- JavaScript不支持函数重载
- javascript不支持函数重载
- javascript 重载函数
- Android数据库升级 数据库升级工具分享
- 限流节流
- NavigableMap(java.util.concurre…
- mongodb3.2(附与3.0之前的区别)
- java基础5
- 浅谈Javascript中的函数重载实现
- hdu 2767 Proving Equivalences
- 算法的时间复杂度和空间复杂度-总…
- Codeforces 628B New Skateboard【数学】
- html5 商品分类页面效果
- Redis
- Java乐观锁和悲观锁
- WebLogic12安装过程详解(windows)
- ArrayList、Vector、HashMap、Hash…