<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 数据响应式:监听数据变化并在视图中更新 -->
<!-- Object.defineProperty() -->
<div id="app"></div>
<script>
const obj = {}
function defineReactive(obj, key, val) {
Object.defineProperty(obj, key, {
get() {
console.log(`get ${key}:${val}`);
return val;
},
set(newVal) {
if (newVal !== val) {
console.log(`set ${key}:${newVal}`);
val = newVal;
update()
}
}
})
}
defineReactive(obj, 'test', '')
// toLocaleDateString() 日期
// toLocaleTimeString() 时间
obj.test = new Date().toLocaleTimeString()
function update() {
app.innerText = obj.test
}
setInterval(() => {
obj.test = new Date().toLocaleTimeString()
}, 1000)
</script>
</body>
</html>
使用Object.defineProperty()实现监听数据变化并在视图中更新
最新推荐文章于 2024-04-10 07:40:14 发布