this指向 - 总结
/* 总结:this 的指向:1.this 的指向 是在执行上下文时才确定的, 并且确定后不可更改;2.this 指向 “其执行上下文的环境对象”; “其执行上下文的环境对象” 判读依据如下: */ /* 浏览器环境下: 严格模式下:1.全局上下文中的 this“其执行上下文的环境对象”为,全局执行上下文的环境对象,而全局执行上下文的环境对象 为 Window对象;2.函数上下文中的 this情景一:apply、call、bind 指定环境对象“其执行上下文的环境对象”为,被指定的环境对象,无论是什么,即使是 null 或者 undefined;情景二:没有指定环境对象->1.作为 独立函数 执行“其执行上下文的环境对象”为 undefined;->2.作为 对象方法 执行“其执行上下文的环境对象”为 这个拥有它的对象;3.对象属性中的 this“其执行上下文的环境对象”为,全局执行上下文的环境对象 为 Window对象;4.构造函数 和 原型方法中的 this构造函数中:“其执行上下文的环境对象”为,以构造函数名命名的新对象;原型方法中:“其执行上下文的环境对象”为,构造函数的原型对象;非严格模式下:1.全局上下文中的 this(同 严格模式)2.函数上下文中的 this情景一:apply、call、bind 指定环境对象(同 严格模式)情景二:没有指定环境对象->1.作为 独立函数 执行“其执行上下文的环境对象”为 Window对象;->2.作为 对象方法 执行(同 严格模式)3.对象属性中的 this(同 严格模式)4.构造函数 和 原型方法中的 this构造函数中:(同 严格模式)原型方法中:(同 严格模式)*//* Node环境下:严格模式下:1.全局上下文中的 this“其执行上下文的环境对象”为,全局执行上下文的环境对象 当前模块{},所以全局中 this 指向当前模块对象{};2.函数上下文中的 this情景一:apply、call、bind 指定环境对象“其执行上下文的环境对象”为,被指定的环境对象,无论是什么,即使是 null 或者 undefined;情景二:没有指定环境对象->1.作为 独立函数 执行“其执行上下文的环境对象”为 undefined;->2.作为 对象方法 执行“其执行上下文的环境对象”为 这个拥有它的对象;3.对象属性中的 this“其执行上下文的环境对象”为,全局执行上下文的环境对象 当前模块{},所以全局中 this 指向当前模块对象{};4.构造函数 和 原型方法中的 this构造函数中:“其执行上下文的环境对象”为,以构造函数名命名的新对象;原型方法中:“其执行上下文的环境对象”为,构造函数的原型对象;非严格模式下:1.全局上下文中的 this(同 严格模式)2.函数上下文中的 this情景一:apply、call、bind 指定环境对象(同 严格模式)情景二:没有指定环境对象->1.作为 独立函数 执行“其执行上下文的环境对象”为 global对象;->2.作为 对象方法 执行(同 严格模式)3.对象属性中的 this(同 严格模式)4.构造函数 和 原型方法中的 this构造函数中:(同 严格模式)原型方法中:(同 严格模式)*//* 可以看出,浏览器环境 和 Node环境中主要的不同就是,全局执行上下文的环境对象: 浏览器中:全局执行上下文的环境对象 为 Window对象,在 非严格模式下,如果没有指定环境对象 或 环境对象为 null 或 undefined, this指向会转为 Window对象;Node中:全局执行上下文的环境对象 为 当前模块对象{},在 非严格模式下,如果没有指定环境对象 或 环境对象为 null 或 undefined, this指向会转为 global对象;*/
原创:转载注明出处,谢谢 :)
转载于:https://www.cnblogs.com/cnblogs-jcy/p/8909962.html
this指向 - 总结相关推荐
- idea中设置指向源代码Scala
1.到官网下载scala源代码 点击如下链接下载源码:http://www.scala-lang.org/download/all.html 选择需要的版本点击进行下载,我选择的是2.11.8版本,如 ...
- 父类引用指向子类对象
父类引用指向子类对象,如何访问子类的属性? 1.第一种办法最简单,强制类型转化为子类. 2.父类引用指向子类对象,由于当前引用为父类,只能访问父类的字段和方法,但是根据多态性可以访问子类的方法,在这个 ...
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...
- vs2003复制一个web窗体,没有更改指向同一个cs 文件,引发大问题
今天我在原来的考试系统的出题模块中,input模块,因为增加的一个web窗体编译有问题,于是就复制了原来的启动项页面input,再改了名字为set1,然后在set1页面上删除了控件和代码,再把set1 ...
- 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)
动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...
- java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- C++:将char*指针强制转换成一个指向结构体的指针
在使用Socket与雷达进行通信采集数据时,会遇到"打包与解包"的问题,在打包和解包过程中,会涉及到结构体指针与字符指针间的强制转换.如下: 打包就是将包头与信息封装成一定大小的包 ...
- C指针8:二级指针(意思就是指向指针的指针)
指针可以指向一份普通类型的数据,例如 int.double.char 等,以下简称一级指针: 也可以指向一份指针类型的数据,例如 int *.double *.char * 等.以下简称二级指针:即如 ...
- C指针5:字符串指针(指向字符串的指针)
在C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,字符数组实际上是一系列字符的集合,也就是字符串(String).在C语言中,没有专门的字符串变量,没有string类型,通常就用一 ...
- C指针4:数组指针(指向数组的指针)
先明确两个概念:(1和2是两个完全不一样的东西) 1.数组指针:如果一个指针指向了数组(该数组就是普通定义的数组),我们就称它为数组指针(Array Pointer).(1强调的是指针) 2.指针数组 ...
最新文章
- esxi6.7虚拟机网卡连接第二个虚拟交换机_Linux云计算底层技术之网络虚拟化
- 自动驾驶中激光雷达如何检测障碍物?
- python-hashlib模块-加密
- ibatis insert mysql_iBATIS创建操作
- MySql学习之组合查询
- TOJ3649欧拉回路
- 玩转 Spring Boot 应用篇(序列号生成器服务实现)
- vs2010 破解版,试用版变正式版
- 蚂蚁金服技术90后:从艺术转投数学,还出版首本TensorFlow中文教材
- “爱玛”等不达标电动自行车下架
- STM32F103ZET6+红外温度传感器mlx90614芯片
- Unity导弹,射击
- yigo基础学习笔记3_数据迁移
- conver(array)
- 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、
- 186_一文看懂压敏电阻和tvs的区别
- MySQL及达梦数据库数字金额转人民币大写
- 在后台处理请求返回的json字符串
- Issues:Frequency out of range: (expecting between 112.50Hz and 275.00Hz, measured 99.85Hz)
- linux虚拟机修改防火墙,vmware防火墙如何设置
热门文章
- 一个技术开发者经常访问的网站
- MySQL级联复制(A-B-C) —log-slave-updates = 1
- 网络资源(1) - Hadoop视频
- python3 解析html_Python3解析html高级操作
- tum数据集_数值预报尚能战否?来自数据驱动的挑战
- 苹果双卡双待是哪一款_等12 mini还是买苹果11?实体店老板给出了答案,很有道理!...
- linux netfilter路由表,Linux netfilter 学习笔记 之十四 netfilter模块会修改数据包关联的路由缓存吗...
- datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器
- 三星android11推送,三星国行S10系列正式推送One UI 3正式版,基于安卓11打造
- winform如何实现将数据库数据加载到树上