不多逼逼 直接上代码:

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

最新文章

  1. 重载与覆盖(java)
  2. e-chart 本地加载中国地图
  3. 弹出层在兼容模式和IE8模式下显示不正常
  4. loj 1036(dp)
  5. Windows下提升进程权限
  6. <六> jQuery 获得内容和属性
  7. python----slots属性安全类
  8. Android GPS应用:临近警告
  9. Repository 仓储,你的归宿究竟在哪?(上)
  10. 201521123053《Java程序设计》第十一周学习总结
  11. Linux进程间通信-消息队列(mqueue)
  12. alpha-咸鱼冲刺day9-紫仪
  13. Linux 命令行输入
  14. spring-data-rest的魔力 10分钟实现增删改查
  15. google map 路线服务
  16. Ubuntu中root的默认密码
  17. node-pre-gyp install --fallback-to-build 错误
  18. mybatis 插入数据并返回主键值
  19. 控制器隐藏了导航 下页pop 导航位置看到黑条
  20. C#的SubString(int start,int end);

热门文章

  1. google的protocol buffers 对象的序列化 for java
  2. 51NOD 1616 最小集合
  3. loj10102 旅游航道
  4. LeetCode第111题:二叉树的最小深度
  5. java全栈day05--ArrayList的基本功能
  6. mysql--表数据的操作
  7. Iterator主要有三个方法:hasNext()、next()、remove()详解
  8. JDBC 配置环境
  9. Grideview总结
  10. blkid找不到需要的uuid