一张图学习常见this的指向
在写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的指向相关推荐
- 一张图了解常见色彩空间及其关系
- python14张图下载_14张思维导图带你征服Python编程
给IT入门加星标,提升编程技能 下载地址:https://pan.baidu.com/s/1x7GUmy7-NIpm6cCUmnVyVA 提取码:98dv 本文主要涵盖了 Python 编程的核心知识 ...
- Docker学习(1)——几张图快速了解Docker
前言 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项: 这篇文章希望能够帮助读者简单了解D ...
- 一张图学会python高清图-一张图带你学会Python,学习Python的非常简单,附教程
原标题:一张图带你学会Python,学习Python的非常简单,附教程 网上有这样一张图片,信息量很大,通常会被配上标题"一张图让你学会Python" 这张图流传甚广,但我没有找到 ...
- 【笔记】三张图读懂机器学习:基本概念、五大流派与九种常见算法
文章目录 [笔记]三张图读懂机器学习:基本概念.五大流派与九种常见算法 Chapter 1: A look at Machine learning 1.What is it? 2.How does m ...
- 一张图解释人工智能、机器学习、深度学习三者关系
首先来一张图: 人工智能: 人工智能(ArtificialIntelligence),英文缩写为AI.是计算机科学的一个分支.人工智能是对人的意识.思维的信息过程的模拟.人工智能不是人的智能,但能像人 ...
- 16张思维导图+学习路线图,囊括所有Python基础,可打印
今天给大家分享的是关于Python基础的14张思维导图,对于大家知识的梳理会有很大的帮助,另外还有两张Python学习路线图,全面系统,让初学者不走弯路.一起来看一看吧! 前面知识回顾!!!!! 程序 ...
- 是学习Java还是Python?一张图告诉你!
Java 和 Python 一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学 Java 还是 Python,是不是 Python 容易学,或是应该先 ...
- P3 吴恩达推荐笔记:22张图总结深度学习全部知识
吴恩达推荐笔记:22张图总结深度学习全部知识 本文简要的解释了深度学习中的基本概念,包括监督学习.逻辑回归.正则化等等. 并且,在了解了一些基本概念后,本文还对目标检测.人脸识别.自然语言处理进行了简 ...
最新文章
- 百度PaddleOCR及云平台OCR API详解及示例
- oracle散列,在Python中散列一个整数,以匹配Oracle的标准_散列
- 何恺明团队最新力作:超越EfficientNet,GPU上提速5倍|CVPR 2020
- 动网论坛Ver 7.1.0 Sp1
- pr扫光转场插件_2020年最新pr转场特效:300套模板+200集视频教程+插件,送你参考...
- python3图形界面简单案例(tkinter)
- VC++下Window剪贴板的操作
- 互联网晚报 | 9月5日 星期日 | 美菜回应大规模裁员;网易云音乐Q2毛利率首次转正;美团展示数字人民币新应用...
- JNI编程中数据类型转换的方法
- Android自定义操作栏示例教程
- 达观杯文本智能处理(4)
- Flume自定义文件命名格式(RollFileSink)
- 2020年软件测试工程师需要具备什么技能--需要学哪些
- C/C++编程:什么是ANSI C标准?
- c语言规定对程序中所用的变量必须,【判断题】C语言程序中要用到的变量必须先定义,然后再使用...
- 老式马桶水封不足的唯一解决方案
- STM32CubeMX学习笔记(16)——电源管理(PWR)低功耗停止模式
- 高效的java异常(Effective Java Exceptions)
- 联通云服务器安全性能怎么样,云安全解决方案
- python如果否则_Python传递参数(如果已定义),否则使用defau