20200918冯佳丽
学习日志
call/apply/bind()
- 什么时候使用
只要函数中的this不是想要的,就可用call/apply/bind替换this指向的对象
-
使用(两种情况)
在函数执行时,临时替换一次this为想要的对象(call/apply)
基于原函数,创建一个新函数副本,但永久绑定新函数中的this为指定的对象(bind)
apply做了三件事
- 调用函数
-
用apply的第一个参数对象临时替换函数中的this这个对象
3.将apply第二个保存多个实参值的数组,先打散,再按顺序逐个传给正在调用的函数的形参变量
问题:arguments可不可以通过认数组的原型对象当干爹来使用数组家的函数?
只要是数字下标的对象,都可以通过继承数组的原型对象来使用数组家的函数,其实,还可以使用.call()抢
数组API
-
查找一个元素在数组中的位置
var i=arr.indexOf(元素值,start)
-
判断
判断arr中每个元素是否都符合条件
arr.every(function(elem,i,arr){
// elem: 当前元素值
// i : 当前位置
// arr : 当前数组
return 判断条件;
})只判断arr中是否包含符合条件的元素
arr.some(function(elem,i,arr){
return 判断条件;
}) -
遍历
遍历数组中每个元素,对元素执行相同的操作(直接修改原数组)
arr.forEach(function(elem,i,arr){
arr[i]=新值;
})依次取出数组中每个元素,执行相同操作后,放入新数组返回(不修改原数组,返回新数组)
var newArr=arr.map(function(elem,i,arr){
return 修改后的新值
}) -
过滤和汇总
过滤
var 新数组=原数组.filter(function(elem,i,arr){
return 判断条件
})
汇总
var 汇总值=arr.reduce(function(prev,elem,i,arr){
// prev是截止到目前,临时的汇总值
return 新的汇总值
},起始值)
// 起始值可以省略,但是不推荐
今日感想
需要理解记忆!
评论留言