• Array.prototype.slice.call 和 slice以及call


     单独的简单介绍,后续再补上一些资料.  

     对象转换为数组.

     1 /**
     2  * slice : 数组->slice(截取)
     3  * 参数有两个,开始截取和结束截取,并返回原数组:
     4  * a.slice(1) || a.slice(1,3) => a.slice(start) || a.slice(start,[end])
     5  * 
     6  */
     7 var a = [1, 5, 7, 8, 9];
     8 var b = a.slice(1, 3);
     9 // console.log(b);
    10 
    11 
    12 /**
    13  * call:对象->call()
    14  * 源于:MDN示例 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
    15  * 语法:function.call(thisArg, arg1, arg2, ...)
    16  * 参数:
    17  *  thisArg 可选的。注意,this可能不是方法看到的实际值:如果方法是非严格模式下的函数,null并且undefined将被全局对象替换,则原始值将被转换为对象。
    18  *  arg1, arg2, ...可选的。函数的参数。
    19  * 描述:
    20  *  该call()允许函数/方法属于被分配并要求一个不同的对象一个对象。
    21  *  call() 为 函数/方法提供了这个新值。使用  call,您可以编写一次方法,然后在另一个对象中继承它,而不必重写新对象的方法。
    22  */
    23 function product(name, price) {
    24     this.name = name;
    25     this.price = price;
    26 }
    27 
    28 function food(name, price) {
    29     product.call(this, name, price);
    30 }
    31 
    32 console.log(new food('cheese', 6).name, 'food函数,成功调用起product的函数');
    33 
    34 
    35 // function disInfo() {
    36 //     console.log('恭喜你成功调用起call!~');
    37 // }
    38 // console.log(disInfo.call())
    39 
    40 
    41 
    42 function toArray() {
    43     return [].slice.call(arguments);
    44     // return [].slice.call(arguments,0);
    45     // return Array.prototype.slice.call(arguments);
    46 }
    47 console.log(toArray(1, 3, 5, 6, 7));
    48 
    49 
    50 /**
    51  * Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组
    52  */
    53 
    54 var obj = {
    55     length: 3,
    56     0: 'a',
    57     1: 'b',
    58     2: 'c'
    59 }
    60 
    61 var obj_1 = {
    62     0: 'a',
    63     1: 'b',
    64     2: 'c'
    65 }
    66 
    67 console.log(obj.length)

     

    ES6写法:

    1 //  ES6新出的方法,必须要求提供其长度,才能正确换为数组
    2 let arrayLike = { 
    3     '0': 'a',
    4     '1': 'b', 
    5     '2': 'c', 
    6     length: 3 
    7 };
    8 console.log(Array.from(arrayLike));
  • 相关阅读:
    Django学习日记04_模板_overview
    Python并发实践_01_线程与进程初探
    web自动化测试笔记(二)
    web自动化测试笔记(一)
    app版本升级的测试点
    移动测(APP)试与web端测试的区别
    Dubbo服务器与普通服务器的区别
    java的错误分类
    安卓手机与iOS手机的区别
    在webstorm里使用git
  • 原文地址:https://www.cnblogs.com/cisum/p/9685570.html
Copyright © 2020-2023  润新知