前端面试题中经常会考this指向问题,初学者通常都会晕头转向,不知所以然。今天我就来讲讲js中this指向问题。

this指向大概分为5种情况,记住这6个规律,基本上面试题都能解决。

通过圆括号直接调用(this指向window)

 var name = "Tom";

 function Person() {
var name = "Jim";
console.log(this.name);
} Person();

 作为对象的方法打点调用(this指向调用该方法的对象)

 var name = "Tom";

 function Person(name) {
this.name=name;
console.log(this.name);
} var p = new Person("Jim");
console.log(this.name);
console.log(p.name);

作为事件处理调用(this指向发生事件的元素)

 var oDiv=document.querySelector("div");

 oDiv.onclick=function(){
console.log(this)
}

定时器调用(this指向window)

 var oDiv = document.querySelector("div");

 oDiv.onclick = function() {
setTimeout(function() {
console.log(this);
}, 1000);
}

数组下标调用(this指向数组)

 var arr = [
"tom",
function() {
console.log(this);
}
] console.log(arr);

最后一点很重要,记住:this指向取决于函数的最终调用者,函数未被调用时,this指向一般都是window,所以一定要看准函数的调用者,此时可以确定上下文this的指向。

最新文章

  1. 登录FTP,下载并读取文件内容
  2. css Animation初体验
  3. .NET Framework 框架的一些简单介绍
  4. 面向服务架构(SOA)和企业服务总线(ESB)
  5. iOS开发 Masonry的简单使用
  6. [LeetCode]题解(python):80-Remove Duplicates from Sorted Array II
  7. C++多态性——函数的覆盖和隐藏
  8. 《你是我的小羊驼》游戏ios源码
  9. vi打开二进制文件
  10. [Head First Python]2. BIF(内置函数)
  11. android代码签名和混乱的包装
  12. ORA-01031:insufficient privileges解决方法
  13. java中equal方法总结
  14. 在Winform开发框架中对附件文件进行集中归档处理
  15. Windows Phone开发手记-WinRT下分组拼音的实现
  16. 剑指offer:从上往下打印二叉树
  17. vnc 登录 Ubuntu gnome 桌面出现 QXcbConnection : Failed to initialize XRandr 错误,然后打不开
  18. TCP系列02—连接管理—1、三次握手与四次挥手
  19. 【点分治】【FFT】Gym - 101234D - Forest Game
  20. 解决IIS的Server Application Error

热门文章

  1. BZOJ1113 [Poi2008]海报PLA 【分治 + 线段树】
  2. Ld, -rpath, -rpath-link
  3. php 百家姓
  4. golang管道
  5. Linux crontab 命令格式与举例
  6. mongodb 使用 robo3T 等工具添加用户之后还是 auth failed 的问题
  7. bzoj 2120
  8. P2243 电路维修
  9. python 中的os模块
  10. 脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest