代码:
<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 个差别 这个就不用回答了!
就是传入参数的第2个参数有点区别
其实2者的作用就是改变作用域
能详细点吗?朋友 就是传入参数的第2个参数有点区别 这个就不用解释了! 这么个改法
@s_p: 也许这个可以帮助你:
http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html
@chenping2008: 谢谢 朋友 我在网上看了下 自己推敲下 明白了!