Chinaunix首页 | 论坛 | 博客
  • 博客访问: 817718
  • 博文数量: 62
  • 博客积分: 526
  • 博客等级: 二等列兵
  • 技术积分: 2078
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-04 20:41
个人简介

博客迁移至 freefe.cc

文章分类

全部博文(62)

分类: 系统运维

2012-09-03 23:54:55

    遇到Array.prototype.slice也是在jQuery中,其toArray()就是使用的Array.prototype.slice.call来进行的处理。
    那到底他的用途是什么呢?

其实很简单,将像arguments那种的类数组对象转换为数组的形式。

  1. Array.prototype.slice.call(arguments,0);
具体可以看以下代码

  1. function curry(){

  2.     alert('arguments:'+arguments);
  3.     alert('typeof arguments:'+typeof arguments);
  4.     alert('arguments instanceof Array:'+(arguments instanceof Array));
  5.     var args = Array.prototype.slice.call(arguments,0);
  6.     alert('args:'+args);
  7.     alert('typeof args:'+typeof args);
  8.     alert('args instanceof Array:'+(args instanceof Array));
  9.                 
  10. }

  11. curry("s","a","d");
从这里可以一目了然的看到起作用是很明显的,我们很多时候希望在函数中处理arguments,使其转换为数组形式更为简便明了。

还有一个问题就是在谷歌,火狐等浏览器下

  1. Array.prototype.slice.call("abcd",0);
也会转变为数组,在IE下就会有误,为空。这个可能需要从原理上来解决。比较JS解析器是不一样的,目前我也没有什么具体答案。


阅读(7799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~