為什么組件中的 data 必須是一個函數,然后 return 一個對象,而 new Vue 實例里,data 可以直接是一個對象?
// data data() { return { message: "子組件", childName:this.name } } // new Vue new Vue({ el: '#app', router, template: '<App/>', components: {App} })
因為組件是用來復用的,且 JS 里對象是引用關系,如果組件中 data 是一個對象,那么這樣作用域沒有隔離,子組件中的 data 屬性值會相互影響,
如果組件中 data 選項是一個函數,那么每個實例可以維護一份被返回對象的獨立的拷貝,組件實例之間的 data 屬性值不會互相影響;
而 new Vue 的實例,是不會被復用的,因此不存在引用對象的問題。