9-18 钟申义 日志

9-18 钟申义 日志

call/apply/bind()

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

要调用的函数.call(替换this的对象, 实参值列表) fun.call(obj, 参数值列表)

要调用的函数.apply(替换this的对象, [包含实参值的数组]) fun.apply(obj, 参数值数组)

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

var 新函数=原函数.bind(替换this的对象)

对比 call/apply call/apply只执行一次。且只临时绑定一次。而bind创建一个副本,且永久绑定,即使日后反复调用函数副本,this也不会丢失或错乱

bind做了两件事 1. 创建一个和原函数一模一样的副本 2. 永久替换this为指定的对象

永久绑定部分实参值 bind不但可以永久绑定this,而且还可永久绑定部分实参值 调用这个函数副本时,只要传剩余的参数即可 注意:被bind创建的函数中的this和绑定的变量,任何情况下不能再被call替换

数组API

查找一个元素在数组中的位置 var i=arr.indexOf(元素值,start)
判断

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

遍历

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

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 新的汇总值
},起始值)

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

心得

做昨天的卷子,感觉知识体系没有梳理,记得太乱,好多以前的知识在逐渐忘记。逻辑题好难!

标签

评论

this is is footer