• 【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的数组。





    **

  • 相关阅读:
    NACBD
    周总结7
    周总结6
    团队题目——TD课程通
    移动端疫情展示
    周总结5
    每周总结4
    每周总结3
    每周总结2
    求最大子数组
  • 原文地址:https://www.cnblogs.com/moyuling/p/9019292.html
Copyright © 2020-2023  润新知