<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue-MVVM</title>
</head>
<body>
<input type="text" id="input1" value="" oninput="myFun()" />
<input type="text" id="input2" />
</body>
<script>
function myFun() {
o._data.test = document.getElementById('input1').value
}
/* 這個函式用來模擬檢視更新 */
function cb(val) {
console.log('試圖更新啦~~');
document.getElementById('input2').value = val
}
/* 遍歷所有屬性的方式對該物件的每一個屬性都通過 defineReactive */
function observer(value) {
if (!value || (typeof value !== 'object')) {
return;
}
Object.keys(value).forEach((key) => {
defineReactive(value, key, value[key]);
})
}
/* 實現對物件的「響應式」 */
function defineReactive(obj, key, val) {
Object.defineProperty(obj, key, {
enumerable: true, // 能否被遍歷,比如 for in,預設值為 false
configurable: true, // 描述該屬性的描述符能否被改變,預設值為 false
get: function reactiveGetter() { // 取值的時候呼叫,預設值為 false
return val;
},
set: function reactiveSetter(newVal) { // 設定值的時候使用
if (newVal === val) return;
cb(newVal);
}
});
}
/* 宣告類 */
class Vue {
constructor(options) {
this._data = options.data;
observer(this._data)
}
}
/* 建立例項 */
var o = new Vue({
data: {
test: ""
}
})
</script>
</html>
複製程式碼
實現Vue-MVVM-step1
相關文章
- 想要永生?虛擬現實中實現永生或成現實
- AOP如何實現及實現原理
- 動手實現一個localcache - 實現篇
- vue 實現原理及簡單示例實現Vue
- Promise實現Promise
- asyncToGenerator 實現
- 實現 strStr()
- jwt實現JWT
- 訊息的即時推送——net實現、websocket實現以及socket.io實現Web
- Golang 實現 Redis(5): 使用跳錶實現 SortedSetGolangRedis
- pytorch實現yolov3(3) 實現forwardPyTorchYOLOForward
- 簡單介紹numpy實現RNN原理實現RNN
- Vue實現左右選單聯動實現(更新)Vue
- C均值聚類 C實現 Python實現聚類Python
- java實現兩個文字相似度 simHash 實現Java
- GO實現Redis:GO實現Redis叢集(5)GoRedis
- 利用棧實現佇列(C語言實現)佇列C語言
- Hadoop-Map/Reduce實現實現倒排索引Hadoop索引
- 如何實現查詢介面的所有實現類
- Docker實現服務發現Docker
- linux實現DNS輪詢實現負載平衡LinuxDNS負載
- 從零實現Vue的元件庫(十六)- Dropdown 實現Vue元件
- 分散式鎖與實現(一)基於Redis實現!分散式Redis
- 虛擬現實還需要多久才能真正的實現
- 從零實現Vue的元件庫(十二)- Table 實現Vue元件
- react全家桶實現招聘app-路由實現(二)ReactAPP路由
- 從零實現Vue的元件庫(一)- Toast 實現Vue元件AST
- 從零實現Vue的元件庫(九)- InputNumber 實現Vue元件
- 從零實現Vue的元件庫(八)- Input 實現Vue元件
- Spring實現IOC容器的兩種實現方式Spring
- 簡易實現 HTTPS (一) 自動實現 sslHTTP
- c++ web框架實現之靜態反射實現C++Web框架反射
- 貝葉斯實現文字分類C++實現文字分類C++
- 用棧實現佇列,實現Enqueue和Dequeue方法佇列ENQ
- 在CGI中實現session的想法和實現 (轉)Session
- asp實現批次錄入資料的實現 (轉)
- Python實現火柴人的設計與實現Python
- AI介面實現:簡單實現Viper配置管理AI