改变函数内this的指向

改变函数内this的指向,js提供了三种方法:

  • call()
  • apply()
  • bind()
    1、call()方法
    call()的主要作用:调用函数、改变函数内的this指向;可以实现继承。
    call(参数一,[参数二],[参数三]…),参数一是this的指向,后面的参数是函数的实参。
		<script>
			var obj1 = {
				name:'zhangsan',
				sayHi:function(){
					console.log(this);
				}
			};
			var obj2 = {
				name:'lisi'
			};
			obj1.sayHi(); // 此时this指向sayHi的调用者,即obj对象。
			obj1.sayHi.call(obj2); // 使用call()方法改变了this的指向,现在指向的是obj2
		</script>

2、apply()方法
apply()的主要作用:调用函数,改变函数内的this指向,对其它方法的借用。
apply(参数一,[参数二,参数三…]).
apply()的用法和call()一样,不一样的是apply()的参数需要以数组的方式传递。因为这个特性当操作数组时我们可以对一些数组没有的方法进行借用。

		<script>
			var obj1 = {
				name:'zhangsan',
				sayHi:function(){
					console.log(this);
				}
			};
			var obj2 = {
				name:'lisi'
			};
			obj1.sayHi(); // 此时this指向sayHi的调用者,即obj对象。
			obj1.sayHi.call(obj2); // 使用call()方法改变了this的指向,现在指向的是obj2
			obj1.sayHi.apply(obj2,[1,2,3]);// 用法和call()一样,不一样的是参数需要以数组的方式传递
		</script>

apply()方法对其它数组没有的方法借用,用法如下:

		<script>
			var arr = [1,3,9,5];
			var max = Math.max.apply(Math,arr);
			console.log(max);
		</script>

对Math对象中max()方法的借用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值