时间:2021-05-26
在JavaScript中,函数function就是对象。
JS中没有方法重载
在JavaScript中,没有方法(函数)重载的概念。
例子:
复制代码 代码如下:
<html>
<head>
<script type="text/javascript">
function add(number)
{
alert(number + 20);
}
function add(number, number1)
{
alert(number + 30);
}
add(10);
</script>
</head>
<body>
</body>
</html>
网页中弹框显示的是40。
说明虽然第二个方法是两个参数,但是仍然调用了它。
交换两个方法的顺序之后,弹框显示30,可以看出不管参数个数如何,是调用同名的后面的方法。
怎么解释这个现象?
这是因为函数声明实际上是建立了一个对象:
复制代码 代码如下:
<html>
<head>
<script type="text/javascript">
function add(number)
{
alert(number + 20);
}
function add(number, number1)
{
alert(number + 30);
}
add(10);
</script>
</head>
<body>
</body>
</html>
这样add实际指向的是后面的对象,而方法调用的时候赋予的参数将会按顺序赋给方法形式参数,后面没有被赋值的参数就是undefined。
JavaScript的函数调用的时候没有严格的参数个数检查,实参个数小于形参个数是可以的,没有被赋值的形参就是未定义值undefined。
实参个数大于形参个数也是可以的,这样只有前面的实参会被使用,多出来的实参不会被使用。
Function对象
在JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。
Function对象接收的所有参数都是字符串类型的,其中最后一个参数就是要执行的函数体,而前面的参数则是函数真正需要接收的参数。
例子:
复制代码 代码如下:
<html>
<head>
<script type="text/javascript">
var add = new Function("number", "number1", "alert(number + number1);");
var add = new Function("number", "alert(number + 20);");
add(10, 30);
</script>
</head>
<body>
</body>
</html>
隐含对象arguments
在JavaScript中,每个函数都有一个隐含的对象arguments,表示给函数实际传递的参数。
arguments和函数的形式参数及其个数无关。
arguments有个有用的属性length,表示实参的长度。可以借助这个来模拟出函数的重载:
练习例子:
复制代码 代码如下:
<html>
<head>
<script type="text/javascript">
function add(number1, number2)
{
alert(arguments.length);
alert(arguments[0]);
alert(arguments[1]);
alert(arguments[2]);
}
//add(2, 3, 4);
function add2()
{
if(1 == arguments.length)
{
alert(arguments[0]);
}
else if(2 == arguments.length)
{
alert(arguments[0] + arguments[1]);
}
else if(3 == arguments.length)
{
alert(arguments[0] + arguments[1] + arguments[2]);
}
}
add2(3);
add2(3, 4);
add2(3, 4, 5);
</script>
</head>
<body>
</body>
</html>
每一个函数对象都有一个length属性,表示该函数期望接收的参数格式。
它与函数的arguments不同,arguments.length表示函数实际接收的参数个数。
例子:
复制代码 代码如下:
<html>
<head>
<script type="text/javascript">
var add = function(num, num2, num3)
{
alert(num + num2 + num3);
}
alert(add.length); //输出3
add(1, 2, 3);
var add2 = function()
{
}
alert(add2.length); //输出0
</script>
</head>
<body>
</body>
</html>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
推荐阅读:JavaScript学习笔记之数组的增、删、改、查JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组随机排序话说面试常会碰到
推荐阅读:JavaScript学习笔记之数组的增、删、改、查JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组随机排序洗牌算法是一个比
推荐阅读:JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组的增、删、改、查JavaScript中提供了sort()和reverse(
在学习过传统的面向对象语言后,如javac++,转学javascript却有点不适应,特别是javascript中所谓的object(对象)function(函
一.基础篇Javascript学习笔记1数据类型Javascript学习笔记2函数Javascript学习笔记3作用域Javascript学习笔记4Eval函数