鱼C论坛

 找回密码
 立即注册
查看: 3138|回复: 14

[庖丁解牛] 0 1 5 4 ★ 无敌小“arguments”

[复制链接]
发表于 2017-7-8 19:42:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-7-8 19:45 编辑

de9ad00dca9ce5d36046cb8de26e1c77.png


在函数代码中,使用特殊对象 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>
    Snip20170708_113.png


    输出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[i] + ' ';
           }
           document.write(test);
        }
    
        showLenght('Welcome','to','Fishc');
    </script>
    </body>
    </html>
    Snip20170708_114.png


    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>
    Snip20170708_115.png


    顺利完成,从1到100求和,不过既然是“递归”,所以实际开发中用的很少。



友情提示:

游客,如果您要查看本帖隐藏内容请回复




这位鱼油,如果喜欢本系列Js帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
睦ちゃん她爹 + 5 + 5 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-10 19:00:17 | 显示全部楼层
想知道是如何动态生成列表的呢?就是每次有新发出来的帖子,列表就会自动多一行。静态的HTML能做到吗?
谢谢答复!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 19:04:38 | 显示全部楼层
勾小鱼Melody 发表于 2017-7-10 19:00
想知道是如何动态生成列表的呢?就是每次有新发出来的帖子,列表就会自动多一行。静态的HTML能做到吗?
谢 ...

那得用ajax技术
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 19:11:12 | 显示全部楼层

那有在出ajax的教程吗~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-10 19:18:56 | 显示全部楼层
勾小鱼Melody 发表于 2017-7-10 19:11
那有在出ajax的教程吗~

楼主可能会出吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-7 14:23:20 | 显示全部楼层
xxxx...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................I love JS!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 16:55:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-13 11:18:14 | 显示全部楼层
.3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 15:27:45 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-15 13:58:00 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-28 15:48:39 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 19:47:59 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-21 14:20:55 | 显示全部楼层
謝謝提供資料
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-12 17:16:20 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-31 16:06:07 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 18:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表