2019-03-25 記錄一個(gè)關(guān)于this的問(wèn)題

前幾日看了一些關(guān)于防抖的文章,今早在自己項(xiàng)目實(shí)現(xiàn)時(shí),發(fā)現(xiàn)一個(gè)問(wèn)題,代碼如下

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

初始代碼是這樣的,結(jié)果導(dǎo)致點(diǎn)擊按鈕之后,只處理一次事件,定時(shí)器雖然也走了,
但是button的結(jié)果就一直是 false。
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),setTimeout里的this對(duì)象指向的時(shí)window,
而其他this對(duì)象指向的時(shí)VueComponent
為了解決這個(gè)問(wèn)題,將代碼修改成這樣:

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

這樣就解決了對(duì)象不一致的問(wèn)題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.概念 在JavaScript中,this 是指當(dāng)前函數(shù)中正在執(zhí)行的上下文環(huán)境,因?yàn)檫@門語(yǔ)言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,239評(píng)論 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,827評(píng)論 1 45
  • 在面向?qū)ο蟮恼Z(yǔ)言中(例如Java,C#等),this含義是明確且具體的,即指向當(dāng)前對(duì)象。一般在編譯期綁定。而在ja...
    一木_qintb閱讀 437評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,674評(píng)論 1 32
  • 參考鏈接 this 關(guān)鍵字 深入理解上下文this 慕課視頻 基本含義 以上示例中實(shí)際都是執(zhí)行的showName方...
    day_day_up閱讀 1,010評(píng)論 2 3

友情鏈接更多精彩內(nèi)容