?說起這個(gè)方法都知道抡句,vue2.0響應(yīng)式數(shù)據(jù)嘛探膊,那今天咱們就聊聊不準(zhǔn)確的 defineproperty,哎待榔?這怎么是不準(zhǔn)確呢逞壁? 您別著急流济。客官往里走,里面都有:
咱們先從基本開始腌闯,讓不知道這個(gè)方法的 認(rèn)識一下绳瘟。
一、作用
Object.defineProperty()?方法會直接在一個(gè)對象上定義一個(gè)新屬性姿骏,或者修改一個(gè)對象的現(xiàn)有屬性糖声,并返回此對象。
二分瘦、語法
Object.defineproperty(?object蘸泻,‘ propName?’?,descriptor)嘲玫;
三蟋恬、參數(shù)詳解
? ??????object :要定義屬性的對象,返回的也是
? ??????propName :要定義或修改的屬性的名稱趁冈。
? ??????descriptor:要定義或修改的屬性描述符歼争,屬性描述符詳情之==>? ?這里。
Vue是如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定的渗勘?
? ??可能朋友們會說是數(shù)據(jù)劫持沐绒,沒錯(cuò),是數(shù)據(jù)劫持旺坠,但是如果細(xì)說的話是對象屬性 訪問器屬性中的 getter 函數(shù)和 setter 函數(shù)實(shí)現(xiàn)的數(shù)據(jù)劫持比較準(zhǔn)確乔遮,了解過數(shù)據(jù)屬性的話就會知道 這兩個(gè)函數(shù)是什么特性。
? ? 也許有人又會說取刃,是Object.defineproperty()配合 set 和 get 實(shí)現(xiàn)的數(shù)據(jù)雙向綁定蹋肮,也不準(zhǔn)確,因?yàn)?Object.defineproperty()方法只是做到了對數(shù)據(jù)的檢測璧疗,但是對UI重新渲染它可沒有做啊坯辩,這里就涉及到了發(fā)布-訂閱模式,和 watcher 的相關(guān)知識崩侠,有興趣可以自己看看漆魔。
就拿最典型的例子來說(個(gè)人理解,大佬糾正):
????????以上就是個(gè)人對?defineproperty 的相關(guān)介紹及理解却音,有時(shí)候面試問 vue 響應(yīng)式原理改抡,你說到?defineproperty 的時(shí)候也就差不多了,如果你真正了解過 defineproperty 及 數(shù)據(jù)屬性系瓢,那在往下問你為什么的時(shí)候阿纤,你也能回答一二。
? ??????還有那句話:如有不對之處及不周之處請大佬們指出夷陋,也希望對一些人有所幫助欠拾,咱們下次再會胰锌!