vue学习笔记之:为何data是一个方法
vue學(xué)習(xí)筆記之:為何data是一個(gè)方法
在vue開(kāi)發(fā)中,我們可以發(fā)現(xiàn),data中的屬性值是在function中return出來(lái)的。可為何data必須是一個(gè)函數(shù)呢?我們先看官方的解釋:
當(dāng)一個(gè)組件被定義, data 必須聲明為返回一個(gè)初始數(shù)據(jù)對(duì)象的函數(shù),因?yàn)榻M件可能被用來(lái)創(chuàng)建多個(gè)實(shí)例。如果 data 仍然是一個(gè)純粹的對(duì)象,則所有的實(shí)例將共享引用同一個(gè)數(shù)據(jù)對(duì)象!通過(guò)提供 data 函數(shù),每次創(chuàng)建一個(gè)新實(shí)例后,我們能夠調(diào)用 data 函數(shù),從而返回初始數(shù)據(jù)的一個(gè)全新副本數(shù)據(jù)對(duì)象
而我對(duì)這句話的理解是:
類(lèi)比與引用數(shù)據(jù)類(lèi)型。如果不用function return 每個(gè)組件的data都是內(nèi)存的同一個(gè)地址,那一個(gè)數(shù)據(jù)改變其他也改變了,這當(dāng)然就不是我們想要的。用function return 其實(shí)就相當(dāng)于申明了新的變量,相互獨(dú)立,自然就不會(huì)有這樣的問(wèn)題;js在賦值object對(duì)象時(shí),是直接一個(gè)相同的內(nèi)存地址。所以為了每個(gè)組件的data獨(dú)立,采用了這種方式。如果不是組件的話,正常data的寫(xiě)法可以直接寫(xiě)一個(gè)對(duì)象,比如data:{ msg : ' 下載 ' },但由于組件是會(huì)在多個(gè)地方引用的,JS中直接共享對(duì)象會(huì)造成引用傳遞,也就是說(shuō)修改了msg后所有按鈕的msg都會(huì)跟著修改,所以這里用function來(lái)每次返回一個(gè)對(duì)象實(shí)例。
?
轉(zhuǎn)載于:https://www.cnblogs.com/momozjm/p/8572385.html
總結(jié)
以上是生活随笔為你收集整理的vue学习笔记之:为何data是一个方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机基本概念及简单的二进制运算
- 下一篇: 3. 堆排序