vue2.x使用debounce里debounce第二个参数怎么读取到this

最近遇到一个需求,vue2.x里的debounce的延迟时间(暂记为wait)需要通过this.wait拿到
很快啊,一顿操作,有了如下代码

<template>
<div  @mouseenter="onMouseEnter">123</div>  
</template>
<script>
import {debounce} from 'lodash'
export default {
props:{
  wait:{
    type:Number,
    default:0
  }
},
method:{
  onMouseEnter:debounce(function($event){
    console.log('执行逻辑部分')
  },this.wait)
}
}
</script>

结果,报错拿不到this,因为此时的this是window,window没有wait变量,应该怎么处理呢?
其实可以在执行mouseenter之前写个中间函数onMouseEnterProxy,再写个debounce函数使得它等于this.onMouseEnter,请看下面代码

<template>
<div  @mouseenter="onMouseEnterProxy">123</div>  
</template>
<script>
import {debounce} from 'lodash'
export default {
props:{
  wait:{
    type:Number,
    default:0
  }
},
method:{
  onMouseEnterProxy($event){
    //这里可以先写一些逻辑,比如debounce触发前要设置flag
    const self = this
    if(!this.onMouseEnter){
        this.onMouseEnter=debounce(function($event){
          console.log('执行逻辑部分')
        },this.wait)
    }
    this.onMouseEnter($event, self)
  },
}
}
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容