通過object.defineproperty()object.defineproperty()
重新定義物件屬性的set方法
、get方法
來實現的,從這個屬性中取值時會觸發get
方法,改變這個屬性時會觸發set
方法,所以我們只要將一些需要更新view
的方法放在這裡面就可以實現data更新view了,而view更新data其實可以通過事件監聽實現
返回值
被傳遞給函式的物件。
物件裡目前存在的屬性描述符有兩種主要形式:資料描述符和訪問描述符。資料描述符是乙個具有值的屬性,該值可以是可寫的,也可以是不可寫的。訪問描述符是由getter 函式和setter 函式所描述的屬性。乙個描述符只能是這兩者其中之一;不能同時是兩者。
作用
* 可以給物件的乙個屬性設定兩個方法:
*get:從這個屬性中取值時會觸發get方法
*set:給這個屬性賦值時會觸發set方法
let obj =
// 給obj的name屬性設定兩個方法get&set
!-- 這裡相當於v
-->
"v">
<
/div>
"text" id=
"ipt"
>
<
/body>
// mvvm:
// 當v改變,m自動改變
// 當m改變,v自動改變
// 這裡相當於m
let data =
// 給data中的name屬性設定兩個方法get ,set
object.
defineproperty
(data,
'name',,
get:
function()
})// 給input新增乙個內容改變的之後會觸發的事件
document.
queryselector
('#ipt').
oninput
=function
(e)<
/script>
<
/html>proxy
用法:
let p =
newproxy
(obj,
,set
:function()
})
vue2 x和vue3 x實現雙向繫結的不同方式
在vue2.x中,實現雙向繫結,是使用object.defineproperty 方法對屬性設定get和set方法實現。object.defineproperty let obj object.defineproperty obj,name set自帶乙個引數 set value obj.name ...
vue3建立vue2 x專案
因為一些原因更新了node,再次安裝vue時,莫名的就vue3了。好吧,但是以前的專案還是vue2的,所以順便嘗試了下vue3建立vue2專案。首先是建立,以前是使用vue init建立,現在是vue create,然後在建立時,可以選擇2還是3 如果選擇3還有一些其它選項 比如是否安裝vue ro...
vue cli2 x和vue 3 x安裝區別
1.npm install vue cli g 安裝vue cli2.x腳手架 2.vue init webpack 使用vue cli2.x來建立乙個名稱為 的專案 3.cd 進入剛建立好的專案的路徑下 4.npm install 安裝依賴 5.npm run dev 啟動專案1.npm inst...