js箭头函数与普通函数的this指向问题

js箭头函数与普通函数的this指向问题

总结一句话 普通函数的this指向调用者,箭头函数的this指向拥有者。

例子:

js 复制代码
// 常规函数:
hello = function() {
  document.getElementById("demo").innerHTML += this;
}

// window 对象调用该函数:
window.addEventListener("load", hello);

// button 对象调用该函数:
document.getElementById("btn").addEventListener("click", hello);

输出: 普通函数this指向调用者,第一次是window调用,第二次是button调用。

js 复制代码
[object Window]    [object HTMLButtonElement]
js 复制代码
// 箭头函数:
hello = () => {
  document.getElementById("demo").innerHTML += this;
}

// window 对象调用该函数:
window.addEventListener("load", hello);

// button 对象调用该函数:
document.getElementById("btn").addEventListener("click", hello);

输出: 该例子里 箭头函数不论你调用者是谁,拥有者都是window。

js 复制代码
[object Window]     [object Window]
相关推荐
秋水无痕22 分钟前
# 手把手教你从零搭建 AI 对话系统 - React + Spring Boot 实战(一)
前端·后端
高桥凉介发量惊人24 分钟前
基础与工程篇-多环境配置(dev/test/prod)与打包策略
前端
墨鱼笔记25 分钟前
前端必看:Vite.config.js 最全配置指南 + 实战案例
前端·vite
kyriewen26 分钟前
异步编程:从“回调地狱”到“async/await”的救赎之路
前端·javascript·面试
前端Hardy28 分钟前
别再手动写 loading 了!封装一个自动防重提交的 Hook
前端·javascript·vue.js
前端Hardy29 分钟前
前端如何实现“无感刷新”Token?90% 的人都做错了
前端·javascript·vue.js
秋水无痕30 分钟前
# 手把手教你从零搭建 AI 对话系统 - React + Spring Boot 实战(二)
前端·后端·面试
SuperEugene38 分钟前
Vue Router 实战规范:path/name/meta 配置 + 动态 / 嵌套路由,统一团队标准|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
小彭努力中1 小时前
194.Vue3 + OpenLayers 实战:动态位置 + 高度 + 角度,模拟卫星地面覆盖范围
前端·css·vue.js·openlayers·animate
颜正义1 小时前
作为前端你还不会 Playwright 进行单元测试吗?
前端·测试