v-model的原理:
特別說明:1. 傳統方式新增的屬性,所有屬性特性預設為true
2. 通過object.defineproperty()新增的屬性,所有屬性特性預設為false
* 引數:引數1:目標物件 引數2:目標物件的屬性 引數3:對屬性的修飾(可寫啊,還是設定為不可列舉等!)
//1:值屬性
let xzl =
//傳統方式修改值屬性
xzl.pwd =
456// => 這裡面的屬性都是可寫的!
//通過object.defineproperty()方法修改值屬性
//需求:設定pwd為不可寫!
object.
defineproperty
(xzl,
"pwd",}
)//需求:設定pwd不可列舉性
object.
defineproperty
(xzl,
"pwd",)
for(
let key in xzl)
//使用普通的方式和 object.defineproperty() 給當前物件新增屬性的區別
//普通方式
xzl.age =
111// => 通過普通方式新增的屬性 都是可遍歷的,可寫的 也就是說值屬性是為trye
//使用 object.defineproperty()
object.
defineproperty
(xzl,
"gender",}
)for
(let key in xzl)
"box"
>
<
/div>
//2:儲存器屬性
// + 原理:就是在乙個物件內部有著get 和 set 方法
// * get 屬性()方法 =>這是獲取到當前的屬性, set 屬性()方法 => 設定新的屬性
//注意點:儲存器屬性作用**,也是就說使用當前的xll作為**,然後修改ll的性別
const xll =
,set
age(newval)
}const ll =
object.
defineproperty
(xll,
"gender",,
set(newval)})
//輸入:xll.gender="女" get00 "女"
//然後在輸入: ll =>
//3:響應式原理
// 響應式屬性的原理:把值屬性變成儲存器屬性(getter&setter)
const user =
//通過**user這個物件 來實現資料的修改!
const xjj =
box.innertext = user.uname;
for(
let key in user)
,set
(newval)})
}
vue例項中的響應式資料的原理const initdate =
}const vm =
newvue()
這邊的100不是儲存器屬性 直接在頁面顯示的 ,並非像儲存器屬性一樣,最先是隱藏的!
//因此需要使用vue.set()方式 去設定,才能為後新增的屬性設定為儲存器屬性!
//引數:引數1:目標物件 引數2:目標物件的屬性值 引數3:目標物件的屬性值
vue.
set(vm.score,
"chinese"
,100);
// vue.set(vm, "chinese", 100);
//注意點:就是這個目標物件 不能設定為vm例項物件 ,也不能設定為initdate物件
//也不能設定給當前的initdate物件的chinese設定為100 也不能 `vue.set(vm, "chinese", 100);` 否則都會報錯:
//只能設定為: vue.set(vm.score, "chinese", 100);
>
>
姓名:}p
>
>
年齡:}p
>
type
="text"
v-bind:value
="age"
v-on:input
="changeage"
>
div>
src=
"../vue.js"
>
script
>
>
let data =
const vm = new vue(
}})
Vue 響應式屬性
本文參考自 1 概述 當建立乙個vue例項時,每個資料屬性 元件屬性等都是可以遍歷的,並為每個資料屬性新增了getter和setter。getter和setter允許vue觀察資料的更改並觸發更新。如果你在vue例項化後新增 或刪除 乙個屬性 例如在方法或生命週期鉤子中 vue是不知道它的。2 更新...
手寫vue 之資料響應式
將檢視view的狀態和行為抽象化,讓我們將檢視 ui 和業務邏輯分開。mvvm框架的三要素 資料響應式 模板引擎及其渲染 傳入物件obj,給他定義乙個屬性key,初始值為val 該屬性未來的訪問會被攔截,這樣就實現了響應式 function definereactive obj,key,val se...
Vue 資料響應式
css響應式不用說大家都知道,拖動瀏覽器視窗大小時,內容布局和大小會自動變化。那麼vue的資料響應式就是,例項中,通過修改vm的.n值,就能改變data 中的n。let vm vue vue2中,資料響應式是通過object.defineproperty實現的。如果開發者給乙個data中不存在的變數...