zoukankan      html  css  js  c++  java
  • 【02】[].slice和Array.prototype.slice

    【02】[].slice和Array.prototype.slice

    01,Array是一个构造函数。浏览器内置的特殊对象。

     
    02,Array没有slice方法。

    03,Array.prototype原型上有方法slice()
    我们可以用Array.prototype.slice或者Array的实例[].slice都行,但不能Array.slice



     
     


    04,
    Array.prototype.slice.call(arguments)
    可以将类数组对象转成数组。



    如:

     var a={length:2,0:'first',1:'second'};
     Array.prototype.slice.call(a);//  ["first", "second"]
     
     var a={length:2};
     Array.prototype.slice.call(a);//  [undefined, undefined]



    【】魔芋:如果没有0开始的属性。


    var a = {length:3,1:33,2:55};
    
    console.log(Array.prototype.slice.call(a));
    
     


    05,slice的内部实现
     Array.prototype.slice = function(start,end){
         var result = new Array();
          start = start || 0;
          end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
          for(var i = start; i < end; i++){
               result.push(this[i]);
          }
         return result;
     }


     

    最后,附个转成数组的通用函数

      var toArray = function(s){
         try{
             return Array.prototype.slice.call(s);
         } catch(e){
                 var arr = [];
                 for(var i = 0,len = s.length; i < len; i++){
                     //arr.push(s[i]);
    arr[i] = s[i]; } return arr; } }
    06,[].slice.call(arguments, 0)
    魔芋:就是使用slice方法。使用0作为第一个实参。

    07,如果length没有,视为长度为0的数组。





    **

  • 相关阅读:
    spring 09-Spring框架基于QuartZ实现调度任务
    spring 08-Spring框架Resource资源注入
    spring 07-Spring框架Resource读取不同资源
    spring 06-Spring框架基于Annotation的依赖注入配置
    html 默认跳转
    poi 设置样式
    支付宝扫码支付回调验证签名
    构造器初始化
    cxf webservice
    CSS3 border-image 属性
  • 原文地址:https://www.cnblogs.com/moyuling/p/9019292.html
Copyright © 2011-2022 走看看