JS核心之ES5应用基础(二)

this的替换

函数执行时,this默认指向调用者,有时我们希望让this指向其他对象。

call

函数名.call(替换this的对象, 参数列表)

例如,要调用a函数,传入两个参数 2和3,此时希望将this替换为对象b。

a(2,3) => a.call(b,2,3);

apply

与call用法相同,但apply将call中的参数列表替换为一个参数数组,再运行函数的时候将自动将数组打散。

a(2,3) => a.apply(b,[2,3]);

bind

上面的两种方法都是一次性调用的方法,有时我们希望重复调用被替换了this的函数。
bind与前者最大的不同是运行bind时不调用bind前的函数,而是创建一个函数副本,副本中的this被调换为bind后第一个参数的值。

var 新函数 = 旧函数.bind(
						替换this的对象,
						要绑定的实参值,
						... ...
					)

之后直接运行新函数即可。
新函数中的this和开头部分形参,已被永久替换为固定的对象和固定的参数值。
今后调用新函数时,只要传入可能变化的剩余几个实参值即可。

数组函数

indexOf查找

var i=arr.indexOf("元素", fromi)

在arr数组内,从fromi位置开始,找下一个和指定"元素"相同的元素所在的位置i。
如果没找到,返回-1。

判断

every判断与

判断数组中是否所有元素都符合要求.

var bool=arr.every(function(value, i, arr){
	//value: 当前元素值
	//i: 当前下标位置
	//arr: 当前数组对象

	return 判断条件
})

every会自动遍历arr数组元素,并在每次遍历中调用回调函数function,并传入辅助参数,当元素符合return返回的判断条件时继续遍历,否则遍历结束,返回flase,如果遍历全部完成则返回true。

some判断或

判断数组中是否包含符合要求的元素.

var bool=arr.some(function(value,i,arr){
	return 判断条件
})

执行时,只要碰到一个元素判断为true,就不再遍历,直接返回true,否则返回false。

遍历

普通遍历 forEach
arr.forEach(function(value, i, arr){
	//对当前元素执行的操作!
})

每遍历一个元素,就在这个元素上自动调用一次回调函数function,function中的操作时对数组本体直接操作。

数组映射 map
var 新数组 = 原数组.map(
		function(value, i,  arr){
		return 要放入新数组中的元素值
})

map会创建一个新数组,回调函数function仍然会在每一次遍历中被调用,但返回值会赋给对应的新数组中的元素位置,完成后返回新数组,数组本体不变。

过滤和汇总

过滤

筛选原数组中符合条件的元素,以新数组的形式返回,不改变原本的数组。

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

自动遍历原数组中每个元素。每遍历一个元素,就自动调用一次回调函数。如果当前元素经过回调函数验证,返回true,则加入新数组中。如果当前元素经过回调函数验证,返回false,则不加入新数组。

汇总

根据条件将数组中的元素内容进行筛选及各种运算,在一定规则下统计出结果。

var sum=arr.reduce(
		function(prev, elem,i,arr){
		//prev 保存截止到当前元素的临时汇总值。
		return 根据已知数据对prev进行操作,得到的新的汇总值。
},起始值)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值