_.debounce防抖函数 在vue中使用this问题,应该传匿名函数而不是箭头函数

简单理解:_.debounce内部做了apply操作,箭头函数由于没有this,无法绑定this,导致最终this是undefined, 而匿名函数,成功通过applay绑定了this,所以this指向了vue组件实例。

javascript 复制代码
methods: {
	// 防抖动
    dSave1: _.debounce(() => {
      console.log(this) // undefined
      this.save()
    }, 500),
    // 防抖动
    dSave2: _.debounce(function(){ 
       console.log('ddd:', this) // this---> vm
    } , 500),
}

debounde函数:

可以看到内部incokeFunc对传入的func做了applay操作(绑定this),而匿名函数function(){}存在this可以被apply成功绑定;反之,因为箭头函数()=>{}本身没有this,所以applay操作无效,因此vue中使用debouncd函数,如果传入箭头函数,其this指向不是vue实例,而是undefined。

总结:

在使用 lodash.debounce 等方法的时候,为保证 this 正确的指向,回调函数推荐使用 匿名函数(function(){})。

箭头函数根本没有自己的 this,导致内部的 this 就是外层代码块的 this。(正因如此,call,apply,bind 就无法生效了,所以针对 this出现异常的情况,请优先考虑是否是因为箭头函数导致的。)

参考:https://blog.csdn.net/wswq2505655377/article/details/131962490

相关推荐
J***Q2929 小时前
前端CSS架构模式,BEM与ITCSS
前端·css
百***68049 小时前
Vue项目中 安装及使用Sass(scss)
vue.js·sass·scss
G***T6919 小时前
React性能优化实战,避免不必要的重渲染
前端·javascript·react.js
q***d1739 小时前
前端微前端部署方案,Nginx与Webpack
前端·nginx·webpack
y***54889 小时前
前端构建工具扩展,Webpack插件开发
前端·webpack·node.js
4***14909 小时前
前端构建工具多页面配置,Webpack与Vite
前端·webpack·node.js
网络点点滴9 小时前
标签的ref属性
前端·javascript·vue.js
天若有情67310 小时前
前端 vs 后端:入行软件行业,我该如何选择?哪个更“简单”?
前端·后端·软件开发·职业·就业·选择
小画家~10 小时前
第二十八:golang Time.time 时间格式返回定义结构体
java·前端·golang
Cobyte11 小时前
17. Vue3 业务组件库按需加载的实现原理
前端·javascript·vue.js