/*
总结: 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. Linux curl 命令

    curl is a tool to transfer data from or to a server, using one of the supported protocols ( http ,ht ...

  2. 对C语言进行调试的最好方法是什么?

    要了解调试程序的最好方法,首先要分析一下调试过程的三个要素: 应该用什么工具调试一个程序? 用什么办法才能找出程序中的错误? 怎样才能从一开始就避免错误? 应该用什么工具调试一个程序? 有经验的程序员 ...

  3. ARM漏洞

    Google安全团队Project Zero公布了多个高危漏洞,称这些漏洞几乎影响到了市面上所有的微处理器,AMD.ARM还是英特尔的处理器都难以幸免,围绕这些处理器打造的操作系统和硬件设备也会受到影 ...

  4. zookeeper集群的安装和配置

    Zookeeper的目的是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户.Zookeeper有两种运行模式,单机模式(Standalone)和集群模式(Distrib ...

  5. 【转】实现Ribbon风格的窗体

    随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格.那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的. 首先,Delph ...

  6. 如何在Linux系统通过命令行生成随机文件

    版权声明:本文由胡恒威原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/86 来源:腾云阁 https://www.qclou ...

  7. HTML5+CSS3 表格设计(Table)

    <style> body { width: 600px; margin: 40px auto; font-family: 'trebuchet MS', 'Lucida sans', Ar ...

  8. Android自定义控件实战——仿淘宝商品浏览界面

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38656929 用手机淘宝浏览商品详情时,商品图片是放在后面的,在第一个Scr ...

  9. MUI事件管理

    模块:事件管理 http://dev.dcloud.net.cn/mui/event/ 事件绑定: 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on( ...

  10. 170613、Spring整合RabbitMQ实例

    一.rabbitMQ简介 1.1.rabbitMQ的优点(适用范围)1. 基于erlang语言开发具有高可用高并发的优点,适合集群服务器.2. 健壮.稳定.易用.跨平台.支持多种语言.文档齐全.3. ...