0 1 5 4 ★ 无敌小“arguments”
本帖最后由 不二如是 于 2017-7-8 19:45 编辑在函数代码中,使用特殊对象 arguments,程序猿兄弟就无需明确指出参数名,直接能访问到。
在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。
arguments非常类似Array,但实际上又不是一个Array实例。
主要有以下三个玩法:
[*]实现重载
在JavaScript内置结构中并没有函数重载的功能,为啥呢?
因为arguments对象能够模拟重载。
比如,最简单的一种方式,根据参数的个数进行重载,代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>鱼C出品</title>
</head>
<body>
<script>
function showLenght(){
switch(arguments.length)
{
case 0:
document.write("长度为0");
break;
case 1:
document.write("长度为1");
break;
case 2:
document.write("长度为2");
break;
case 3:
document.write("长度为3");
break;
default:
document.write("超出可预测范围");
break;
}
}
showLenght('Welcome','to','Fishc');
</script>
</body>
</html>
输出3,意味着arguments对象可以加载到“变量的长度”,而不需要起多个名字的方法。
利用arguments对象实现函数重载的方式可以有几种,除了上面根据参数的个数。
还可以根据传入参数的类型来执行不同的操作。
也可以利用参数中特殊的参数值来进行不同的操作。
[*]同数组下标访问实参
JavaScript中每个函数都会有一个Arguments对象的实例arguments。
它引用着函数的实参,而且可以用数组下标的方式来引用arguments的元素。
来段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>鱼C出品</title>
</head>
<body>
<script>
function showLenght(){
var test = "";
for(var i = 0 ; i < arguments.length; i++)
{
test += arguments + ' ';
}
document.write(test);
}
showLenght('Welcome','to','Fishc');
</script>
</body>
</html>
arguments.length为函数实参的个数。
要注意的是:
arguments对象并不是一数组,它也不具有数据的所有方法。
但是访问单个参数的方式与访问数组元素的方式相同,argument
所以很容易把二者搞混,其实不一样的两个东西~
[*]属性callee指向自己
对象都是有自己的属性和方法的,Arguments对象也是一样。
callee就是它的方法,这个方法用的不多,很容易被我们忽略。
它指向的是正在被执行的Function对象,既然是指向自己,那么很容易联想到“递归”
也来段代码看一看:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>鱼C出品</title>
</head>
<body>
<script>
function getSum(i){
if(i == 1)
{
return 1;
}
else{
return i+arguments.callee(i-1);
}
}
document.write(getSum(100));
</script>
</body>
</html>
顺利完成,从1到100求和,不过既然是“递归”,所以实际开发中用的很少。
友情提示:
**** Hidden Message *****
这位鱼油,如果喜欢本系列Js帖子,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} ) 想知道是如何动态生成列表的呢?就是每次有新发出来的帖子,列表就会自动多一行。静态的HTML能做到吗?
谢谢答复!{:10_256:} 勾小鱼Melody 发表于 2017-7-10 19:00
想知道是如何动态生成列表的呢?就是每次有新发出来的帖子,列表就会自动多一行。静态的HTML能做到吗?
谢 ...
那得用ajax技术 alltolove 发表于 2017-7-10 19:04
那得用ajax技术
那有在出ajax的教程吗~
勾小鱼Melody 发表于 2017-7-10 19:11
那有在出ajax的教程吗~
楼主可能会出吧{:10_312:} xxxx...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................I love JS! {:10_277:} .3 111 1 1 1 謝謝提供資料 1 1
页:
[1]