鍍金池/ 問(wèn)答/Python  HTML/ vue.js mounted問(wèn)題

vue.js mounted問(wèn)題

本人新手, 買(mǎi)了梁灝大神的vue.js,里面的一個(gè)小例子沒(méi)太看懂.是關(guān)于this的.希望大神們解答下.
完整代碼在body中, 為什么要用 var _this = this, 這個(gè)this不就是指向的 vue 嗎,代碼中 //聲明一個(gè)變量指向 Vue 實(shí)例this,保證作用域一致,是什么意思呢? 我嘗試了下, 如果沒(méi)寫(xiě) var _this = this 的話(huà),直接寫(xiě)成下面這也的話(huà),

mounted: function () {
    this.timer = setInterval(function () {
        this.data = new Date()
    },1000)
},

這樣寫(xiě)的話(huà),時(shí)間將不會(huì)刷新. 請(qǐng)問(wèn)這是為什么呢.

<body>

<div id="app">
    {{data}}
</div>
<script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
<script type="text/javascript">
    var app = new Vue({
        el: '#app',
        data () {
            return {
                data: new Date(),
            }
        },
        mounted: function () {
            var _this = this //聲明一個(gè)變量指向 Vue 實(shí)例this,保證作用域一致
            this.timer = setInterval(function () {
                _this.data = new Date()
            },1000)
        },
        beforeDestroy: function () {
            if (this.timer) {
                clearInterval(this.timer)
            }
        }
    })
</script>

</body>

回答
編輯回答
使勁操

這是js中作用域的問(wèn)題跟vue沒(méi)關(guān)系,在學(xué)vue之前還是要好好的了解下js原理。建議去看看js權(quán)威指南。

2017年4月24日 12:24
編輯回答
互擼娃

這是個(gè)跟vue沒(méi)有關(guān)系的問(wèn)題。
涉及到this的指向的一個(gè)問(wèn)題,你去搜this的四種調(diào)用(還有別的種類(lèi),但是先搜這個(gè))
搜完之后繼續(xù)往下看:
然后這里的

setInterval(function () {
    this.data = new Date()
},1000)

this是屬于setInterval的回調(diào)函數(shù)的,屬于直接調(diào)用,指向誰(shuí)?

最后希望你先學(xué)js基礎(chǔ)。

官方指南假設(shè)你已了解關(guān)于 HTML、CSS 和 JavaScript 的中級(jí)知識(shí)。
2018年1月11日 19:40