• javascript中 Array.prototype.slice的用法.


    首先看到 www.w3school.cn上的解释:http://www.w3school.com.cn/jsref/jsref_slice_array.asp

    定义和用法

    slice() 方法可从已有的数组中返回选定的元素。

    语法

    arrayObject.slice(start,end)
    参数描述
    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    返回值

    返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

    说明

    请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

    提示和注释

    注释:您可使用负值从数组的尾部选取元素。

    注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。

    实例

    例子 1

    在本例中,我们将创建一个新数组,然后显示从其中选取的元素:

    <script type="text/javascript">
    
    var arr = new Array(3)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    
    document.write(arr + "<br />")
    document.write(arr.slice(1) + "<br />")
    document.write(arr)
    
    </script>

    输出:

    George,John,Thomas
    John,Thomas
    George,John,Thomas

    例子 2

    在本例中,我们将创建一个新数组,然后显示从其中选取的元素:

    <script type="text/javascript">
    
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    document.write(arr.slice(2,4) + "<br />")
    document.write(arr)
    
    </script>

    输出:

    George,John,Thomas,James,Adrew,Martin
    Thomas,James
    George,John,Thomas,James,Adrew,Martin

    这是最基本的用法。

    今天在看jquery源码的时候有段代码:
    //转换成数组.
    toArray: function() { return core_slice.call( this ); },

     其中:  core_slice=[].slice ;

    通过查询资料才了解到: 

    除了正常用法,slice 经常用来将 array-like 对象转换为 true array。在一些框架中会经常有这种用法。

    Array.prototype.slice.call(arguments);//将参数转换成真正的数组.

    因为arguments不是真正的Array,虽然arguments有length属性,但是没有slice方法,所以呢,Array.prototype.slice()执行的时候,Array.prototype已经被call改成arguments了,因为满足slice执行的条件(有length属性).

  • 相关阅读:
    UML期末复习题——2.7:UML Sequence Diagram
    UML期末复习题——2.6:Package Diagram
    UML期末复习题——2.5:System Sequence Diagram & Post-condition
    UML期末复习题——2.4:Domain Model
    UML期末复习题——2.3:UML State Diagram
    UML期末复习题——2.2:UML Activity Diagram.
    UML期末复习题——2.1:Use Case Diagram
    UML期末复习题
    《C++之那些年踩过的坑(附录一)》
    《C++之那些年踩过的坑(三)》
  • 原文地址:https://www.cnblogs.com/huaan011/p/4704583.html
Copyright © 2020-2023  润新知