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





    **

  • 相关阅读:
    数组作为方法参数
    定义一个方法,根据商品总价,计算出对应的折扣并输出。折扣信息如下
    Cocos2d入门--1--初涉相关属性或代码
    JSP基础--JAVA遇见HTML
    查找算法--折半查找
    排序算法--冒泡排序
    排序算法--简单选择排序
    C语言的传值与传址调用
    学习C语言的数组
    如何获取QQ里的截图app?
  • 原文地址:https://www.cnblogs.com/moyuling/p/9019292.html
Copyright © 2020-2023  润新知