在写JS代码时,this的出场频率颇高,担负了传递对象,作用域等等功能,堪称全能超人。

但是this复杂多变,初学的时候想弄清楚并不简单,绕着绕着就迷路了。

“我是谁?我从哪来?我要到哪去?”

对于常见的this指向总结成一张简图,佐以示例代码食用,味道更佳。

示例代码

例1:

// 浏览器中
console.log(this);
复制代码

例2:

// Node.js cli中
console.log(this);
复制代码
// Node.js module中
// 具体原因可查看Node模块作用域知识
//main.js
console.log(this === global);
console.log(this === module.exports);
复制代码

例3:

//浏览器中
function foo() {console.log(this);
}
foo();
复制代码

例4:

//浏览器中
function foo() {"use strict";console.log(this);
}
foo();
复制代码

例5:

// 浏览器中
var _this;
function Foo() {_this = this;
}
var foo = new Foo();
console.log(_this);
foo === _this;
复制代码

例6:

// 浏览器中
var foo = {method: function() {console.log(this === foo);}
}
foo.method();
复制代码

例7:

// 浏览器暂不支持ES6语法,在Node 8.0以上版本试验
// test.js
function foo() {let bar = () => {console.log('from bar->' + this);};console.log('from foo->' + this)bar();// 箭头函数免疫call/apply修改作用域bar.call(666);
}
foo.call(555);
foo.call(777);
复制代码

下一次总结this常见的陷阱及避坑建议( ̄. ̄)

参考

2ality.com/2014/05/thi…

一张图学习常见this的指向相关推荐

  1. 一张图了解常见色彩空间及其关系

  2. python14张图下载_14张思维导图带你征服Python编程

    给IT入门加星标,提升编程技能 下载地址:https://pan.baidu.com/s/1x7GUmy7-NIpm6cCUmnVyVA 提取码:98dv 本文主要涵盖了 Python 编程的核心知识 ...

  3. Docker学习(1)——几张图快速了解Docker

    前言 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项: 这篇文章希望能够帮助读者简单了解D ...

  4. 一张图学会python高清图-一张图带你学会Python,学习Python的非常简单,附教程

    原标题:一张图带你学会Python,学习Python的非常简单,附教程 网上有这样一张图片,信息量很大,通常会被配上标题"一张图让你学会Python" 这张图流传甚广,但我没有找到 ...

  5. 【笔记】三张图读懂机器学习:基本概念、五大流派与九种常见算法

    文章目录 [笔记]三张图读懂机器学习:基本概念.五大流派与九种常见算法 Chapter 1: A look at Machine learning 1.What is it? 2.How does m ...

  6. 一张图解释人工智能、机器学习、深度学习三者关系

    首先来一张图: 人工智能: 人工智能(ArtificialIntelligence),英文缩写为AI.是计算机科学的一个分支.人工智能是对人的意识.思维的信息过程的模拟.人工智能不是人的智能,但能像人 ...

  7. 16张思维导图+学习路线图,囊括所有Python基础,可打印

    今天给大家分享的是关于Python基础的14张思维导图,对于大家知识的梳理会有很大的帮助,另外还有两张Python学习路线图,全面系统,让初学者不走弯路.一起来看一看吧! 前面知识回顾!!!!! 程序 ...

  8. 是学习Java还是Python?一张图告诉你!

    Java 和 Python 一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学 Java 还是 Python,是不是 Python 容易学,或是应该先 ...

  9. P3 吴恩达推荐笔记:22张图总结深度学习全部知识

    吴恩达推荐笔记:22张图总结深度学习全部知识 本文简要的解释了深度学习中的基本概念,包括监督学习.逻辑回归.正则化等等. 并且,在了解了一些基本概念后,本文还对目标检测.人脸识别.自然语言处理进行了简 ...

最新文章

  1. 百度PaddleOCR及云平台OCR API详解及示例
  2. oracle散列,在Python中散列一个整数,以匹配Oracle的标准_散列
  3. 何恺明团队最新力作:超越EfficientNet,GPU上提速5倍|CVPR 2020
  4. 动网论坛Ver 7.1.0 Sp1
  5. pr扫光转场插件_2020年最新pr转场特效:300套模板+200集视频教程+插件,送你参考...
  6. python3图形界面简单案例(tkinter)
  7. VC++下Window剪贴板的操作
  8. 互联网晚报 | 9月5日 星期日 | 美菜回应大规模裁员;网易云音乐Q2毛利率首次转正;美团展示数字人民币新应用...
  9. JNI编程中数据类型转换的方法
  10. Android自定义操作栏示例教程
  11. 达观杯文本智能处理(4)
  12. Flume自定义文件命名格式(RollFileSink)
  13. 2020年软件测试工程师需要具备什么技能--需要学哪些
  14. C/C++编程:什么是ANSI C标准?
  15. c语言规定对程序中所用的变量必须,【判断题】C语言程序中要用到的变量必须先定义,然后再使用...
  16. 老式马桶水封不足的唯一解决方案
  17. STM32CubeMX学习笔记(16)——电源管理(PWR)低功耗停止模式
  18. 高效的java异常(Effective Java Exceptions)
  19. 联通云服务器安全性能怎么样,云安全解决方案
  20. python如果否则_Python传递参数(如果已定义),否则使用defau

热门文章

  1. java程序设计与实践教程 王薇 doc_Java程序设计与实践教程 王薇主编 答案
  2. poll和死锁_计算机基础知识
  3. shell脚本发邮件内容html,[转]Shell脚本中发送html邮件的方法
  4. mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?
  5. Linux 终端配置
  6. TypeScript类型检查机制
  7. logging模块和包
  8. JsonBuilder初出茅庐
  9. java 链接mysql 产生500W数据模拟生成环境
  10. 事务传播机制/数据库异常解析——2016-8-13分享总结