ES5笔记

ES5

1.call/apply/bind

替换this

何时:只要this不是想要的,就用call/apply/bind替换

鄙视:三者的区别

call/apply:立刻调用函数并临时替换this为指定对象

何时:如果希望立刻调用函数时

如何:fun.call(obj,参数值,...)

           立刻调用fun函数,并临时替换fun中的this为obj

           fun.appy(obj,数组)

           立刻调用fun函数,并临时替换fun中的this为obj,同时打散数组参数为单个参数值,再传给fun

           tips:打散数组类型的参数只有用apply或者concat

                    var arr1=[1,2.3]; var arr2=[4,5,6]; arr1.push.apply(arr1,arr2);console.log(arr1)//[1,2,3,4,5,6];

                   var arr1=[1,2.3]; var arr2=[4,5,6];  var arr1=arr1.concat(arr2);console.log(arr1)//[1,2,3,4,5,6];

bind:基于原函数创建一个新函数,永久绑定this为指定对象

何时:如果希望基于原函数创建一个新函数时,或者说不是立刻调用

如何:fun.bind(obj,参数值,...)

          创建一个和fun完全一致的新函数;永久绑定fun中的this为obj;永久绑定部分参数值

 

2.数组API

3组:

1.判断

every():判断数组中是否所有元素都符合条件

如何:var bool=arr.every(function(val,i,arr){

//val自动获得当前元素值

//i自动获得当前位置

//arr指当前数组本身

return 判断条件

})

原理:every用function去每个元素执行一次

只有所有元素都返回true时,整体才返回true

只要有一个返回false,则整体返回false

some:判断数组中是否包含符合条件的元素

如何:var bool=arr.some(function(val,i,arr){

//val自动获得当前元素值

//i自动获得当前位置

//arr指当前数组本身

return 判断条件

})

原理:some用function去每个元素执行一次

只有所有元素都返回false时,整体才返回false

只要有一个返回true,则整体返回true

//判断一个数组是否全是奇数
var arr1=[1,2,3,4,5,6,7,8];
function isodd(value){
    return value%2==1;
}
console.log(arr1.every(isodd));

//判断哪个数组时升序排列
function isasc(val,i,arr){
  return i<arr.length-1?val<=arr[i+1]:true;//undifined 在关系比较时会隐式转为NAN,NAN不大于小于等于任何值
}
console.log(arr1.every(isasc));

2.遍历API

forEach():对原数组中每个元素执行相同的操作。直接修改原数组

如何:arr.forEach(function(val,i,arr){arr[i]=新值})

map():依次取出原数组中的值,执行相同的操作后,放入新数组返回。不直接修改原数组,返回操作后的新数组

如何:var newarr = arr.map(function(val,i,arr){return 新值;})
var arr=[1,2,3,4,5];
arr.forEach(function(val,i,arr){
  arr[i]=val*2;
})
var arr1 = arr.map(function(val){
  return val*2
})

3.过滤和汇总

filter():选取数组中符合条件的元素,组成新数组。原数组不变  arr.filter(function(val,i,arr){return 判断条件})

//选取arr中的偶数
var arr=[1,2,3,4,5];
var arr1 = arr.filter(function(val,i,arr){
  return val%2=0;
})

reduce():汇总:遍历数组中的每一个元素,汇总出一个最终的结果

如何汇总:var result = arr.reduce(prev,val,i,arr){//prev截至到目前为止的临时汇总值}

//求和
var arr=[1,2,3,4,5];

var sum = arr.reduce(function(prev,val){
  return prev+val;
})

var arr2=[2,4,6,8];

var sum=arr2.reduce(function(prev,val){return prev+val;},sum);

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值