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对象;
*/
原创:转载注明出处,谢谢 :)
this指向 - 总结的更多相关文章
- C语言中 指向函数的指针 简介
引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...
- JS this指向
正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...
- java多态性,父类引用指向子类对象
父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...
- 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题
setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟 ...
- what's this? 浅谈js中this的指向问题
刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量 ...
- EC笔记,第二部分:10.让=返回指向*this的引用
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...
- JavaScript中this指针指向的彻底理解
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...
- JavaScript中this指向的简单理解
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 12-返回指针的函数&&指向函数的指针
前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针 一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...
- 彻底理解js中this的指向,不必硬背。
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
随机推荐
- Python urllib2 模块
urllib2.urlopen(url, data=None, timeout=<object object>) :用于打开一个URL,URL可以是一个字符串也可以是一个请求对象,data ...
- AVL 平衡树
AVL是一种平衡二叉树,它通过对二叉搜索树中的节点进行旋转使得二叉搜索树达到平衡.AVL在所有的平衡二叉搜索树中具有最高的平衡性. 定义 平衡二叉树或者为空树或者为满足如下性质的二叉搜索树: 左右子树 ...
- 【go】go语言socket通信样例
server.go package main import ( "net" "fmt" "io" ) func main() { liste ...
- yield方法
yield方法的作用是房企当前的CPU资源,将他让给其他的任务去占用CPU执行时间,但房企的时间不确定,有可能刚刚放弃,马上又获得CPU时间片. package yield; /** * Create ...
- LeetCode——Convert Sorted Array to Binary Search Tree
Description: Given an array where elements are sorted in ascending order, convert it to a height bal ...
- npm更新到最新版本
命令行运行: npm install -g npm
- Java初学者笔记二:关于类的常见知识点汇总
一.Java的类: Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍: 1.Java的类定义时候的修饰符 2.Java的类的继承与派生 二.Java ...
- Swift - 获取当前系统时间
// 获取当前系统时间 let date = NSDate() let timeFormatter = NSDateFormatter() timeFormatter.dateFormat = &qu ...
- SElinux以及防火墙的关闭
[root@localhost targeted]# pwd/etc/selinux/targeted[root@localhost targeted]# getsebool -a|grep samb ...
- ruby rvm groke
https://ruby-china.org/wiki/rvm-guide http://www.cnblogs.com/peak-c/p/7338291.html https://doc.yonyo ...