不多逼逼 直接上代码:

var name = "window";
var obj = {
name: 'obj',
//普通函数
one: function(){
console.log(this.name)
},
//箭头函数
two: ()=> {
console.log(this.name)
},
//普通函数中的箭头函数
three: function(){
(()=>{
console.log(this.name)
})()
},
//多层箭头函数
four: ()=> {
(()=>{
console.log(this.name)
})()
}
}
obj.one(); //obj
obj.two(); //window
obj.three(); //obj
obj.four() //window

说明:

1、

普通函数中的this总是指向它的直接调用者;

箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。

2、

①比如上面的 obj.one();直接调用者是obj,因此this指向obj

②箭头函数中的this指向是固定的,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数内部没有this,箭头函数的this是在定义时就绑定的,它的this就是箭头函数所处的对象的所处作用域

比如obj.three();箭头函数所在的对象是函数three,函数three处于obj的作用域中,因此this指向obj;

比如obj.four();箭头函数所在的对象是obj,obj处于window的作用域中因此this指向window。

3、

es6函数写法有2种,一种是 fn: (str) => { } ; 一种是 fn(str){ }

箭头函数是没有上下文的、this会直接指向上一级

第二种写法this指向调用它的调用者

2019-01-30补充

//1内部this对象指向创建期上下文对象
// 普通函数的this指向是在函数的执行期间绑定的
//比如
function fn6(){
console.log(this)
}
fn6() // 自调用的时候,指向window
var obj = {};
obj.f = fn6;
obj.f(); // 指向他的直接调用者obj document.onclick = fn6; // 指向触发该事件的对象 document

ES6和ES5中的this指向问题的更多相关文章

  1. ES5中改变this指向的三种方法

    ES5中提供了三种改变函数中this指针指向的方法,分别如下 1.call() var obj = {username:"孙悟空"}; //没有任何修饰的调用函数,函数中的this ...

  2. ES6中的类继承和ES5中的继承模式详解

    1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...

  3. ES6中。类与继承的方法,以及与ES5中的方法的对比

    // 在ES5中,通常使用构造函数方法去实现类与继承 // 创建父类 function Father(name, age){ this.name = name; this.age = age; } F ...

  4. Javascript定时器中的this指向

    使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: var name = 'my name is window'; var obj = ...

  5. JS中的this 指向问题

    我发现在对JS的学习中有很多朋友对this的指向问题还是有很大的误区或者说只是大致了解,但是一旦遇到复杂的情况就会因为this指向问题而引发各种bug. 对于之前学习过c或者是Java的朋友来说可能这 ...

  6. Javascript回调函数中的this指向问题

    使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: 1 var name = 'my name is window'; 2 var ob ...

  7. ES6与React中this完全解惑

    计划写很长的篇幅,预计12月初完成. 这篇文章涉及的知识较多,可能一次消化不了,可以渐渐来. 先说结论: 无论是ES6还是React的this,相对于ES5,只是增加了箭头函数this绑定了其封闭上下 ...

  8. JavaScript中this的指向(转载)

    转载自:http://www.cnblogs.com/dongcanliang/p/7054176.html 前言 this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现 ...

  9. ES5中的this

    参考资料:>>> this的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理: this 永远指向最后调用它的那个对象 下面我们来看一个最简单的例子:(例子均来自参考资 ...

随机推荐

  1. protocol buffers的使用示例

    protocol buffers的使用示例 如果不了解protocol buffers,可以先参看:http://blog.csdn.net/zhu_xun/article/details/19343 ...

  2. ZROI2018普转提day1t4

    传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上.我们用这种方 ...

  3. WebGoat系列实验Buffer Overflows & Code Quality & Concurrency

    WebGoat系列实验Buffer Overflows & Code Quality & Concurrency Off-by-One Overflows 实验需要访问OWASP Ho ...

  4. STL 结构体 内部函数

    typedef struct Node { int val; string name; bool operator < (const Node &right) const { retur ...

  5. web 后台打印

    //提交打印 function sbumitPrint() { printHidden("AppsDSPrintDoub.aspx?type=print"); } function ...

  6. Data Base sql server 备份数据库

    sql server 备份数据库 1.维护计划向导: 右键维护计划-维护计划向导-然后安装提示: 勾选自己要干的事,比如:完整备份数据库.差异备份数据库等等 2.作业计划: 如下图: SQL Serv ...

  7. SysPeek打不开解决方法

    SysPeek 是Linux平台下一款简洁小巧的系统状态指示软件,可实时显示 CPU.Memory.Swap.硬盘和网络使用情况.然而最近却使用不了,打不开.无论点击图标或者是终端打开,都不显示.看错 ...

  8. P3345 [ZJOI2015]幻想乡战略游戏 动态点分治

    \(\color{#0066ff}{ 题目描述 }\) 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越 ...

  9. P1082 同余方程

    题意:给定a,b,求$ax \equiv 1 \pmod b$的最小正整数解x,保证有解 exgcd:求$ax+by=gcd(a,b)$的 一组解x,y 首先根据正常的gcd可得出   $gcd(a, ...

  10. 最短路+状压DP【洛谷P3489】 [POI2009]WIE-Hexer

    P3489 [POI2009]WIE-Hexer 大陆上有n个村庄,m条双向道路,p种怪物,k个铁匠,每个铁匠会居住在一个村庄里,你到了那个村庄后可以让他给你打造剑,每个铁匠打造的剑都可以对付一些特定 ...