首页 新闻 会员 周边 捐助

js apply和 call的理解 路过的大侠 帮帮忙谢谢!

0
悬赏园豆:5 [已解决问题] 解决于 2013-01-06 23:58

代码:

        <script type="text/javascript" charset="utf-8">
            // 伪数组(ArrayLike)
            var jqObj = {
                0: 'one',
                1: 'two',
                2: 'three',
                length: 3
            };
            //数组
            ary = ['one', 'two', 'three'];
            
            // 将伪数组(ArrayLike)转成数组
            function jqObjToArray(json){
                var slice = Array.prototype.slice;
                return slice.call(json, 0);
            }
            
            // 将数组转成伪数组(ArrayLike)
            function ArrayToJqObj(ary){
                var obj = {}, push = Array.prototype.push;
                push.apply(obj, ary);
                return obj;
            }
            
            console.log(jqObjToArray(jqObj));
            console.log(ArrayToJqObj(ary));
        </script>
return slice.call(json, 0); 输出["one","two","three"]
return slice.call(json, 1); 输出["two","three"]
这个他内部运行的原理??为什么  
还有这个
push.apply(obj, ary);

注 :不是问apply和call 个差别 这个就不用回答了!
s_p的主页 s_p | 初学一级 | 园豆:140
提问于:2013-01-04 17:24
< >
分享
最佳答案
0

就是传入参数的第2个参数有点区别

其实2者的作用就是改变作用域

收获园豆:5
chenping2008 | 大侠五级 |园豆:9836 | 2013-01-04 17:26

能详细点吗?朋友 就是传入参数的第2个参数有点区别 这个就不用解释了! 这么个改法

s_p | 园豆:140 (初学一级) | 2013-01-04 17:27
chenping2008 | 园豆:9836 (大侠五级) | 2013-01-04 17:32

@chenping2008: 谢谢 朋友 我在网上看了下 自己推敲下 明白了!

s_p | 园豆:140 (初学一级) | 2013-01-06 23:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册