鍍金池/ 問(wèn)答/HTML/ vue 多個(gè)計(jì)算屬性依賴一個(gè)值,會(huì)導(dǎo)致該值被改變?

vue 多個(gè)計(jì)算屬性依賴一個(gè)值,會(huì)導(dǎo)致該值被改變?

問(wèn)題是這樣的:模板中用了iview的日期選擇器這個(gè)組件,綁定了searchTime這個(gè)值,然后寫(xiě)了兩個(gè)計(jì)算屬性,里面分別都用到了searchTime,但是打印里面的數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)xlist這個(gè)searchTime是正常的,但是在dataObj這個(gè)計(jì)算屬性中,searchTime已經(jīng)被改變了,也就是說(shuō),看起來(lái)是xlist中是直接作用于searchTime,寫(xiě)的startTime并沒(méi)有一個(gè)拷貝的感覺(jué),導(dǎo)致xlist操作一遍之后searchTime的值已經(jīng)發(fā)生改變,dataObj無(wú)法正常使用。不是很理解為什么會(huì)這樣,有沒(méi)有大神可以解釋下

<template>

 <DatePicker v-model="searchTime" @on-change="searchTimeChange($event)" :options="disableDate" type="daterange" placement="bottom-start" placeholder="選擇日期" style="width: 200px"></DatePicker>

</template>
<script>

data:{
    searchTime
}
computed: {
    xList () {
    var list = []
    let startTime = this.searchTime[0]
    let endTime = this.searchTime[1]
    while ((endTime.getTime() - startTime.getTime()) >= 0) {
      let month = (startTime.getMonth() + 1).toString()
      let day = startTime.getDate().toString()
      list.push(`${month}月${day}日`)
      startTime.setDate(startTime.getDate() + 1)
      console.log('xList', endTime, startTime)
    }
    return list
  },
  dataObj () {
    let startTime = this.searchTime[0]
    let endTime = this.searchTime[1]
    console.log(this.searchTime, startTime, endTime)
  }
}

</script>

clipboard.png

回答
編輯回答
雅痞

new Date()是個(gè)對(duì)象
startTime.setDate(startTime.getDate() + 1)這一步操作會(huì)修改掉this.searchTime[0]的值。

2018年1月19日 17:48