前端面试题—this的指向
this的指向判断规则
- 函数直接用圆括号运行,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>
- 数组(类数组对象)中枚举出函数,this指向这个数组(类数组对象): arr
<script> function fun1(fn){ arguments[0](3,4) } function fun2(){ console.log((this.length)) } fun1(fun2,5,6,7,8) //打印结果:5 </script>
- 定时器调用函数,this指向window
- 被当做了事件处理函数,this指向触发事件的dom元素
- 用new调用函数,this指向函数体内秘密创建的空白对象
- 用apply、call、bind可以改变的this指向,this指向apply(object,[arg1,arg2])、call(object,arg1,arg2)中的对象
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
第三十一周总结——js数组