箭头函数中的this和普通函数中的this 到底有什么区别

eisldkw 2020-04-22 02:47:57
箭头函数中的this和普通函数中的this 到底有什么区别

普通函数中的this 是指调用这个函数的调用者,那箭头函数中的 this 是指啥
...全文
421 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coder-F 2020-04-22
  • 打赏
  • 举报
回复

let a = {
test2: function () {
console.log('this of test2', this)
},
test3: () => {
console.log('this of test3', this)
}
}
a.test2()
a.test3()

结果:
eisldkw 2020-04-22
  • 打赏
  • 举报
回复
引用 2 楼 天际的海浪 的回复:
就与访问变量一样,如果在当前作用域中没有找到变量,就会到外层作用域找这个变量。一直找到全局作用域。this也是一样。 箭头函数内没有自己的this。 如果在箭头函数内访问this,就直接从外层函数作用域中找this。
非常的感谢。
eisldkw 2020-04-22
  • 打赏
  • 举报
回复
引用 1 楼 Chappell_ycp 的回复:
普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, 在严格模式下,没有直接调用者的函数中的this是 undefined使用 call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 箭头函数中的this: 箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象), 而不是执行时的对象, 定义它的时候,可能环境是window,也有可能是其他的。
非常感谢。请问什么叫 没有直接调用者 ?
天际的海浪 2020-04-22
  • 打赏
  • 举报
回复
就与访问变量一样,如果在当前作用域中没有找到变量,就会到外层作用域找这个变量。一直找到全局作用域。this也是一样。 箭头函数内没有自己的this。 如果在箭头函数内访问this,就直接从外层函数作用域中找this。
简_洋 2020-04-22
  • 打赏
  • 举报
回复
普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, 在严格模式下,没有直接调用者的函数中的this是 undefined使用 call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 箭头函数中的this: 箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象), 而不是执行时的对象, 定义它的时候,可能环境是window,也有可能是其他的。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧