美文网首页
2019-03-25 记录一个关于this的问题

2019-03-25 记录一个关于this的问题

作者: 6ca1187489ce | 来源:发表于2019-03-25 10:39 被阅读0次

前几日看了一些关于防抖的文章,今早在自己项目实现时,发现一个问题,代码如下

data () {
  return {
    button: true 
  }
}
save () {
  if (this.button == true) {
    this.button = false
    //处理保存事件
  }
  setTimeout(function () {
    this.button = true
  }, 2000)
}

初始代码是这样的,结果导致点击按钮之后,只处理一次事件,定时器虽然也走了,
但是button的结果就一直是 false。
经过测试发现,setTimeout里的this对象指向的时window,
而其他this对象指向的时VueComponent
为了解决这个问题,将代码修改成这样:

data () {
  return {
    button: true 
  }
}
save () {
const vm = this
  if (vm.button == true) {
    vm.button = false
    //处理保存事件
  }
  setTimeout(function () {
    vm.button = true
  }, 2000)
}

这样就解决了对象不一致的问题

相关文章

网友评论

      本文标题:2019-03-25 记录一个关于this的问题

      本文链接:https://www.haomeiwen.com/subject/nstvvqtx.html