深入淺出Vue中為什么不能檢測數(shù)組變化

Object.defineProperty了解一下

? ? 可以理解為給屬性定義屬性的方法

? ? 具體例子


這里我們給book添加了name,和page二個屬性,通過屬性給其設置值和取值的時候會調(diào)用我們定義的set,get方法。

Vue中就是靠這個方法給每一個對象嵌套般的加了get,set方法,并且要達到響應式,要求是對象上已定已的屬性,后期添加的不算,但是可以通過Vue.set這個全局方法給其添加,因為當初定義的都可以使用這個方法添加上,但是你后添加的屬性并沒有執(zhí)行這個方法,所以無法實現(xiàn)響應式,基于此,我們可以類比數(shù)組, 比如一個數(shù)組 var arr = [1,2,3] 這時候可以認為arr的數(shù)組索引是他們的屬性,arr[index]是能取到值的,想當于屬性去訪問值,因此我們可以認為0,1,2是arr的屬性,如果是在vue中,可以認為Vue給0,1,2添加了get,set方法,但是比如我們給arr[3]=3,這時候3這個(屬性)下標被賦值了一個3,想當于添加了一個屬性,但是不要忘了,這是后添加的,因此vue給數(shù)組都實現(xiàn)了怪異方法實現(xiàn)響應式(具體可見官網(wǎng)介紹)。

js每日tips

? ? 1.非Object的原型對象.__proto__指向Object.prototype 而Object.prototype.__proto__=null

? ? 2.所有的構(gòu)造函數(shù) Function Object Date Array Regxp 等等其他內(nèi)置函數(shù)的__proto__ 都是Function.prototype

? ? 3.一般來說被new出來的對象三步到頭==》null

? ? ? ? eg: function Person(){ this.name =name}

? ? ? ? ? ? var p1 = new Person()

? ? ? ? ? ? p1.__proto__=Person.prototype

? ? ? ? ? ? p1.__proto__.__proto__=Object.prototype

? ? ? ? ? ? p1.__proto__.__proto__.__proto__=null

? ? 而構(gòu)造函數(shù) Person

? ? Person.__proto__=Function.prototype

? ?Person.__proto__.__proto__=Obejct.prototype

Person.__proto__.__proto__.__proto__=null

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫閱讀 11,605評論 2 55
  • 凍筍出土中,味醇而滑,肥而不滓,蓋所謂純氣之守也。 入春未十日,而筍理蘇硬,食後猶存齒頰間,豈化之漓也。出胎稚子,...
    古陽閱讀 307評論 0 0
  • 有些人,一轉(zhuǎn)身就是一輩子。 曾經(jīng)你遇到了某個人,你以為那就是一生。 你想象過無數(shù)種未來、幻想了無數(shù)種以后, 曾經(jīng)你...
    家鄉(xiāng)的風物百科閱讀 1,053評論 0 1
  • 新年的第一天就過的有些凌亂,晨讀溝通,但不知是否觸動到某些情緒,頭腦里有被卡住的感覺,然后與時尚芭莎的人聊,然后頭...
    jenjenzhong閱讀 169評論 0 0

友情鏈接更多精彩內(nèi)容