1.vue數(shù)據(jù)響應式的原理
2.數(shù)據(jù)屬性的四大特性
3.訪問器屬性
4.getter和setter
vue數(shù)據(jù)響應式主要運用js中對象的知識奄薇,下面稍微研究一下js中的對象
JS
對象的屬性:
? ? ? ? ? ? 命名屬性:
? ? ? ? ? ? ? ? ? ? ? ? ?凡事可以用點訪問的屬性都是命名屬性
? ? ? ? ? ? 數(shù)據(jù)屬性:
? ? ? ? ? ? ? ? ? ? ? ?直接存儲屬性值的屬性
? ? ? ? ? ? ? ? ? ? ? ?四大特性:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?value? 實際存儲屬性值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? writable: true/false? ? 規(guī)定當前屬性是否只讀的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? enumerable:true/false? 控制是否可遍歷
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?configurable: true/false? ? 控制是否可修改或刪除其他特性
? ? ? ? ? ? ? ? ? ? ? ?如何讀壤克肌:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object.getOwnPrpertyDescriptor(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?obj,"屬性名"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ? ? ? ? ?如何設(shè)置屬性特性:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Object.defineProperty(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?obj,"屬性"帆竹,{特性:值,.........}?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)
? ? ?訪問器屬性:
? ? ? ? ? ? ? ? ? 不直接存儲屬性值骡澈,僅對其他屬性提供保護
? ? ? ? ? ? ? ? ?四大屬性:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? get()負責返回一個值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?set()設(shè)置一個屬性的值? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? enumerable:? true/false 控制是否可遍歷
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? configurable:? true/false? 控制是否可修改或刪除其他特性
? ? ? ? ? ? ? ? 何時使用:只需要用自定義屬性的規(guī)則保護屬性時?
? ? ? ? ? ? ? ? 如何使用:
? ? ? ? ? ? ? ? ? ? ? ? ? ?1.定義數(shù)據(jù)屬性郎汪,實際存儲屬性值
? ? ? ? ? ? ? ? ? ? ? ? ? ?2.定義訪問器屬性刹帕,保護數(shù)據(jù)屬性? ? 真實屬性保護起來(如圖一)抖格,放一個傀儡? ? ? 采用閉包匿名函數(shù)自調(diào)(如圖二)? 把受保護的數(shù)據(jù)隱藏起來
? ? ? ? ? ? ? ? ? ? ? ? ? Object.defineProperty{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?obj,"屬性"洽沟,{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? get:function(){return},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? set:function(val){xxx=val},
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?enumerable:,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?configurable:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ?內(nèi)部屬性:
? ? ? ? ? ? ? ? ? 不允許用點直接訪問的屬性
? ? ? ? ? ? ? ? ? ? ? ? 防篡改:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1蹋辅,防擴展? ? 不能放進去? 但能取東西
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Object.preventExtensions(obj)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2悴势,密封? ? ?不能放也不能取? 在防擴展之上
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Object.seal(obj)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.凍結(jié)? ?禁止修改所有屬性的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Object.freeze(obj)? ??