apply()和call()的用法及不同点

 一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
		</style>
		<script type="text/javascript">
			function Person(name,age){
				this.name=name;
				this.age=age;
			}
			function Hooby(food,sport){
				this.food=food;
				this.sport=sport;
				alert(this.name+this.age+","+"最喜吃:"+food+","+"并且喜欢"+sport)
			}
			var per=new Person("小明","17岁");
			Hooby.call(per,"香蕉","跑步");//小明17岁,最喜欢吃香蕉,并且喜欢跑步;
			Hooby.apply(per,["香蕉","跑步"]);//小明17岁,最喜欢吃香蕉,并且喜欢跑步;
		</script>
	</head>
	<body>
	</body>
</html>

不同的是:

apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。

call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。

另外:依靠apply和call方法可以获得借用Math的方法,获得某个数组中的最大值或者最小值。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
		</style>
		<script type="text/javascript">
		var num=[1,2,4,2,3,1,5,7,3,8,9,12,6,2,4,6,23];
//		用apply方法
		var minNum=Math.min.apply(Math,num);
		var maxNum=Math.max.apply(Math,num);
		console.log(minNum);
		console.log(maxNum);
//		由于call方法需要例举参数,所以不适用于数组区最大最小值;
		var minNum=Math.min.call(Math,2,3,3,2,3,2);
		var maxNum=Math.max.call(Math,2,3,1,4,2,3,34,12,3,54,23);
		console.log(minNum);
		console.log(maxNum);
		</script>
	</head>
	<body>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值