当前位置:网站首页>Object.defineProperty实时监听数据变化并更新页面
Object.defineProperty实时监听数据变化并更新页面
2022-08-05 01:03:00 【追逐梦想之路_随笔】
//html
<ul></ul>
//js部分
<script>
var ul = document.querySelector('ul');
var person = { sex: '男', age: '25', name: '王大锤', height: 28, weight: 32 };
const _render = element => {
var str = `<li>姓名:<span>${person.name}</span></li>
<li>性别:<span>${person.sex}</span></li>
<li>年龄:<span>${person.age}</span></li>
<li>身高:<span>${person.height}</span></li>
<li>体重:<span>${person.weight}</span></li>`
element.innerHTML = str;
}
_render(ul);
// 补全代码
// 监听对象入口
function obseve(targetObj){
if(targetObj === null || typeof targetObj !== "object" ){
return targetObj
}
for (const key in targetObj) {
defineReactive(targetObj,key,targetObj[key])
}
}
// 正式劫持和监听对象
function defineReactive(targetObj,key,value){
Object.defineProperty(targetObj,key,{
get(){
return value
},
set(setVal){
if(setVal !== value){
value = setVal
_render(ul)
}
}
})
}
// 传入需要监听的对象
obseve(person)
边栏推荐
猜你喜欢
随机推荐
Software testing interview questions: What are the seven-layer network protocols?
torch.autograd.grad求二阶导数
硬实力和软实力,哪个对测试人来说更重要?
Getting Started with Kubernetes Networking
跨域解决方案
5.PCIe官方示例
Software Testing Interview Questions: What's the Key to a Good Test Plan?
第十四天&postman
手把手基于YOLOv5定制实现FacePose之《YOLO结构解读、YOLO数据格式转换、YOLO过程修改》
2022 Hangzhou Electric Multi-School 1004 Ball
JWT简单介绍
方法重写与Object类
ORA-00604 ORA-02429
GCC:头文件和库文件的路径
新来个技术总监,把DDD落地的那叫一个高级,服气
5. PCIe official example
torch.autograd.grad finds the second derivative
Exercise: Selecting a Structure (1)
软件基础的理论
Knowledge Points for Network Planning Designers' Morning Questions in November 2021 (Part 1)
](/img/4d/2d81dc75433c23c5ba6b31453396f0.png)








