前端面试题—this的指向

this的指向判断规则

  1. 函数直接用圆括号运行,this指向是window对象: fun()
<script>
		var obj={
			a:1,
			fun:function(){
				var a=2
				return function (){
					return this.a
				}
			}
		}
		var a=3
		var res=obj.fun()()
		console.log(res)   //结果:3
		// 解析流程
		// obj.fun = function(){
		// 		var a=2
		// 		return function (){
		// 			return this.a
		// 		}
		// 	},
		// obj.fun()=function (){
		// 			return this.a
		// 		}
		// obj.fun()():  此时this指向window,this.a=window.a=3
		
	</script>

2.对象打点调用函数,this指向是对象: obj.fun()

<script>
		var obj={
			a:1,
			fun:(function(){
				var a=2
				return function (){
					return this.a
				}
			})()
		}
		var a=3
		var res=obj.fun()
		console.log(res)   //结果:1
		
		
	</script>
  1. 数组(类数组对象)中枚举出函数,this指向这个数组(类数组对象): arri
<script>
		
		function fun1(fn){
			arguments[0](3,4)
		}
		function fun2(){
			console.log((this.length))  
		}
		fun1(fun2,5,6,7,8) //打印结果:5
	</script>
  1. 定时器调用函数,this指向window

  2. 被当做了事件处理函数,this指向触发事件的dom元素

  3. 用new调用函数,this指向函数体内秘密创建的空白对象

  4. 用apply、call、bind可以改变的this指向,this指向apply(object,[arg1,arg2])、call(object,arg1,arg2)中的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值