20200918冯佳丽

学习日志

call/apply/bind()

  1. 什么时候使用

​ 只要函数中的this不是想要的,就可用call/apply/bind替换this指向的对象

  1. 使用(两种情况)

    在函数执行时,临时替换一次this为想要的对象(call/apply)

​ 基于原函数,创建一个新函数副本,但永久绑定新函数中的this为指定的对象(bind)

apply做了三件事
  1. 调用函数
  2. 用apply的第一个参数对象临时替换函数中的this这个对象

    3.将apply第二个保存多个实参值的数组,先打散,再按顺序逐个传给正在调用的函数的形参变量

问题:arguments可不可以通过认数组的原型对象当干爹来使用数组家的函数?

只要是数字下标的对象,都可以通过继承数组的原型对象来使用数组家的函数,其实,还可以使用.call()抢

数组API

  1. 查找一个元素在数组中的位置

    var i=arr.indexOf(元素值,start)

  2. 判断
    判断arr中每个元素是否都符合条件

    arr.every(function(elem,i,arr){
    // elem: 当前元素值
    // i : 当前位置
    // arr : 当前数组
    return 判断条件;
    })

    只判断arr中是否包含符合条件的元素

    arr.some(function(elem,i,arr){
    return 判断条件;
    })

  3. 遍历
    遍历数组中每个元素,对元素执行相同的操作(直接修改原数组)

    arr.forEach(function(elem,i,arr){
    arr[i]=新值;
    })

    依次取出数组中每个元素,执行相同操作后,放入新数组返回(不修改原数组,返回新数组)

    var newArr=arr.map(function(elem,i,arr){
    return 修改后的新值
    })

  4. 过滤和汇总
过滤

var 新数组=原数组.filter(function(elem,i,arr){
return 判断条件
})

汇总

var 汇总值=arr.reduce(function(prev,elem,i,arr){
// prev是截止到目前,临时的汇总值
return 新的汇总值
},起始值)

// 起始值可以省略,但是不推荐

今日感想

需要理解记忆!

标签

评论

this is is footer