vue原始碼之變化偵測

2022-09-04 23:48:24 字數 1006 閱讀 8759

vue的最大特點之一就是資料驅動檢視,什麼是資料驅動檢視,簡單來說就是資料變化引起檢視變化。

使得object資料實現『可觀測』,object建構函式提供了defineproperty方法使資料『可觀測』

1、object.defineproperty

該方法允許精確地新增或修改物件的屬性。通過賦值操作新增的普通屬性是可列舉的,在列舉物件屬性時會被列舉到(for...inobject.keys方法),可以改變這些屬性的值,也可以刪除這些屬性。這個方法允許修改預設的額外選項(或配置)。預設情況下,使用object.defineproperty()新增的屬性值是不可修改(immutable)的。

物件裡目前存在的屬性描述符有兩種主要形式:資料描述符和訪問描述符。資料描述符是乙個具有值的屬性,該值可以是可寫的,也可以是不可寫的。訪問描述符是由 getter 函式和 setter 函式所描述的屬性。乙個描述符只能是這兩者其中之一;不能同時是兩者。

let obj ={};

let val = '

object的變化偵測';

object.defineproperty(obj,

'name',,

set: (newval)=>

})console.log(obj.name);

//此處觸發get事件,列印 obj物件的name屬性被讀取了 object的變化偵測

obj.name = '

修改';//

此處觸發了set事件,列印 obj物件的name屬性被修改了 修改

通過object.defineproperty()方法給obj定義了乙個name屬性,並把這個屬性的讀和寫分別使用get()set()進行攔截,每當該屬性進行讀或寫操作的時候就會觸發get()set()

Vue物件的Object的變化偵測

恢復內容開始 1 什麼是變化偵測 vue.js會自動通過狀態生成dom,並輸出到頁面上進行顯示,這過程稱為渲染,當狀態發生變化時vue能立刻感知到哪些狀態改變了,並進行更新 2.如何追蹤狀態變化 js裡面偵測物件的變化有兩種,一種是object.defineproperty和es6的proxy fu...

JQuery原始碼之 變數,正則

jquery原始碼之 變數,正則 一 jq原始碼中的正則 這裡推薦乙個正則測試理解的 1.d d ee d 分析 這個是檢測數字的。如css中距離,字型等等設定 10px,10px,還有科學技術法 匹配零個或乙個加號或減號 d 非獲取匹配,匹配零或多次數字加點 如32.或匹配空 d 匹配乙個或多個數...

Nginx原始碼分析之變數

server content by lua block map host var 2變數的定義方法有三種,var1是用set指令定義的 變數 1 是正則匹配出來的 變數var 2是用map指令定義的。http host並不是前面三種方法定義的變數,它是屬於 字首變數 它的字首是 http 表示從請求...