关于this的解析:看了就懂,忘记了随时回来看
初识this
this => 永远表示某个对象,但写在不同的地方,它表示不同的对象全局下的this:
window => 浏览器环境下的全局对象
console.log(this) => 全局作用域内的this指向window默认情况的this:
this一般只用在函数内部:函数内的this就是找到这个函数的所有者
let obj = {
name:'你好程序猿',
fn(){
// 这里的this指向obj,fn属于obj
console.log(this.name);
}
} obj.fn();
函数内的this指向这个函数的所有者,是因为函数的所有者才有这个函数,一般也是由所有者来调用该函数
那能不能认为谁拥有这个函数,this就指向谁呢?
通常情况确实如此,但这样并不不严谨,我们继续往下看
- this严格的定义
this => 哪个对象调用this所在的函数,this就指向这个对象.(严谨)
那怎么样算调用?
函数一定是需要通过某个对象调用的
- 默认情况,对象只能调用自己的方法,不能调用别的对象的方法
- 默认情况,函数的所有者就是函数的调用者
所以找this的指向,就是看看这个调用的前面是哪个对象,this就指向这个对象
- 确定this指向步骤(默认情况)
- a:this写在哪个函数声明内(写在哪个函数的{}里,先找到this写在哪)
- b:这个函数的调用在哪里 => 关键
- c:看看这个调用的前面是哪个对象,this就指向这个对象
- 确定this指向(特殊情况)
js是如何让一个对象调用不属于它的方法呢
call方法 => 临时改变一次this指向
apply方法 => 临时改变一次this指向,与call的区别是传递的参数格式为数组
bind方法 => 绑定this => 永久改变this指向
了解详细情况,请关注后面的call,apply,bind解析
- 确定箭头函数this指向
有箭头函数,不要分析箭头函数的调用,分析箭头函数的父函数的调用
了解详细情况,请关注后面的箭头函数的this指向解析
- 确定new构造函数this指向
有new,this指向实例
了解详细情况,请关注后面的new构造函数this指向解析
关于this的解析:看了就懂,忘记了随时回来看的更多相关文章
- 深度剖析HashMap的数据存储实现原理(看完必懂篇)
深度剖析HashMap的数据存储实现原理(看完必懂篇) 具体的原理分析可以参考一下两篇文章,有透彻的分析! 参考资料: 1. https://www.jianshu.com/p/17177c12f84 ...
- [转帖]MerkleDAG全面解析 一文读懂什么是默克尔有向无环图
MerkleDAG全面解析 一文读懂什么是默克尔有向无环图 2018-08-16 15:58区块链/技术 MerkleDAG作为IPFS的核心数据结构,它融合了Merkle Tree和DAG的优点,今 ...
- [转帖]Linux shell中2>&1的含义解释 (全网最全,看完就懂)
Linux shell中2>&1的含义解释 (全网最全,看完就懂) https://blog.csdn.net/zhaominpro/article/details/82630528 ...
- 2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文
2018前端面试总结,看完弄懂,工资少说加3K | 掘金技术征文:https://juejin.im/post/5b94d8965188255c5a0cdc02
- Java进阶专题(二十六) 将近2万字的Dubbo原理解析,彻底搞懂dubbo
前言 前面我们研究了RPC的原理,市面上有很多基于RPC思想实现的框架,比如有Dubbo.今天就从Dubbo的SPI机制.服务注册与发现源码及网络通信过程去深入剖析下Dubbo. Dubbo架构 ...
- java回调函数,看完就懂
java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...
- 解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件. 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来 ...
- Python迭代和解析(5):搞懂生成器和yield机制
解析.迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html 何为生成器 生成器的wiki页:https://en.wikipedia ...
- 一篇你看了就懂的DNS详解
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住IP. 通过域名,最终得到该域名对应的IP地址 ...
随机推荐
- error: failed to push some refs to 'XXX'
遇到上述无法提交的问题:都是这种命令git push -u origin master造成的 查看github上的提示: 解决:把之前的命令中的master修改成main就好了
- TCP/IP协议的经典面试知识点总结
前言 大家好啊,我是汤小圆. 今天给大家推荐的是,TCP/IP协议的经典面试知识点总结,希望对大家有帮助,谢谢. 简介 我们平时经常听到的TCP/IP协议,其实是一个协议族: 只不过因为TCP.IP是 ...
- python多版本与虚拟环境
这篇纯python技术文章,我自己平时也会用到,在此记录一下. 为什么会用到多个Python版本? 用macOS和Ubutntu的同学都知道系统默认安装的Python2.7.x,然后,我们平时pyth ...
- java例题_44 一个偶数总能表示为两个素数之和
1 /*44 [程序 44 偶数的素数和] 2 题目:一个偶数总能表示为两个素数之和. 3 */ 4 5 /*分析 6 * 1.从键盘得到一个偶数(大于2的偶数,因为1不是素数) 7 * 2.用for ...
- CVE-2020-1472 Zerologon
CVE-2020-1472 Zerologon 漏洞简介 CVE-2020-1472是继MS17010之后一个比较好用的内网提权漏洞,影响Windows Server 2008R 2至Windows ...
- CVPR2021| 继SE,CBAM后的一种新的注意力机制Coordinate Attention
前言: 最近几年,注意力机制用来提升模型性能有比较好的表现,大家都用得很舒服.本文将介绍一种新提出的坐标注意力机制,这种机制解决了SE,CBAM上存在的一些问题,产生了更好的效果,而使用与SE,CBA ...
- Java8中的默认方法
作者:汤圆 个人博客:javalover.cc 前言 大家好啊,我是汤圆,今天给大家带来的是<Java8中的默认方法>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻 ...
- 软工2021个人阅读作业#2——构建之法和CI/CD的运用
项目 内容 这个作业属于哪个课程 2021学年春季软件工程(罗杰 任健) 这个作业的要求在哪里 2021年软工-热身阅读作业#2 我在这个课程的目标是 了解和掌握现代软件开发和项目管理技术,锻炼在大规 ...
- User-Agent大全 python
1 # -*-coding:utf-8 -*- 2 3 import random 4 5 # 返回一个随机的请求头 headers 6 def getheaders(): 7 # 各种PC端 8 u ...
- kubernetes node SchedulingDisabled
问题: k8s 集群的节点处于 SchedulingDisabled 解决方案 kubectl patch node NodeName -p "{\"spec\":{\& ...