immediate設爲true後,則監聽的這個對象會當即輸出,也就是說一刷新頁面就會在控制檯輸出,固然此時頁面上的數據咱們還沒來得及手動讓其發生變化,因此在控制檯輸出的newValue爲咱們在代碼中默認設置的值,oldValue輸出爲「undefined」。如code
當咱們手動改變newValue.id的值後,輸出以下:對象
若是不設置immediate,或者將immediate設爲false的話,則刷新頁面後不會當即監聽此對象,也就是控制檯不會有輸出,必需要監聽的對象有值改變時控制檯纔會有輸出。input
data() { return { value:'' }; }, watch:{ value:{ handler:'init', immediate:true } }, methods: { init(){ alert(1) } }
deep設爲true後,就能夠深刻監聽了。簡單點說,就是能夠監聽到對象裏面的值的變化了it
<div> <input type="text" v-model="student.studentName">{{student.studentName}} </div> student:{ studentName:'xi' } watch:{ student:{ handler:function (newValue,oldValue) { console.log(newValue,'new') console.log(oldValue,'old') }, deep:true, immediate:true } } 不加deep監聽不到改變