/*
总结: 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对象;
*/

原创:转载注明出处,谢谢 :)

this指向 - 总结的更多相关文章

  1. C语言中 指向函数的指针 简介

    引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...

  2. JS this指向

    正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...

  3. java多态性,父类引用指向子类对象

    父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...

  4. 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题

    setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟 ...

  5. what's this? 浅谈js中this的指向问题

    刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量 ...

  6. EC笔记,第二部分:10.让=返回指向*this的引用

    Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...

  7. JavaScript中this指针指向的彻底理解

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...

  8. JavaScript中this指向的简单理解

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  9. 12-返回指针的函数&&指向函数的指针

    前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...

  10. 彻底理解js中this的指向,不必硬背。

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

随机推荐

  1. 演示PostgreSQL的详细安装及配置图解

    右击文件选择以管理员身份运行 2 开始执行程序的安装 3 设置安装目录 4 设置数据的保存目录 5 设置数据库管理员密码,请牢记此密码. 6 设置端口号,选择默认的端口号即可 7 根据自己选择设置地区 ...

  2. iGson

    头文件 #import <Foundation/Foundation.h> #import <objc/runtime.h> #import "NSString+Ut ...

  3. HTTP/2笔记之消息交换

    前言 无论是HTTP/1.*还是HTTP/2,HTTP的基本语义是不变的,比如方法语义(GET/PUST/PUT/DELETE),状态码(200/404/500等),Range Request,Cac ...

  4. 【BZOJ2901】矩阵求和

    Description 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. Input 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数 ...

  5. Linux系统修改编码(转)

    Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.为了解决此问题,修改Linux的默认编码为GBK.方法如下: 方法1: vi ...

  6. windows本地环境如何用wamp配置多域名绑定访问

    https://jingyan.baidu.com/article/acf728fd5fcdadf8e510a3e5.html

  7. Hadoop讲解

    1.简介 Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算,适合大规模数据.流式数据(写一次,读多次),不适合低延时的访问.大量的小文件以及频繁修改的文件. *Hadoo ...

  8. Java类集框架——List接口

    学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别.    Collection ...

  9. 奇怪的Visual Studio 2013停止响应问题

    昨天开始遭遇这个问题,今天再次遭遇. 疑似问题发生在写代码的窗口中复制/粘贴时(有待进一步确认触发条件),突然停止响应,出现下面的对话框: 对话框中的文字为: Waiting for a requir ...

  10. nginx+lua构建简单waf网页防火墙

    需求背景 类似于论坛型的网站经常会被黑掉,除了增加硬件防护感觉效果还是不太好,还会偶尔被黑,waf的功能正好实现了这个需求. waf的作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,x ...