响应式
在初始化时,通过defineProperty进行绑定,设置通知机制
当编译生成的渲染函数被实际渲染的时候,会触发getter进行依赖收集,在数据变化时,通过setter进行更新。
响应式原理 defineProperty
示例
<!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>
<div id="app">
<p id="name"></p>
</div>
</body>
<script>
var obj = {};
Object.defineProperty(obj, 'name', {
get() {
return document.querySelector('#name').innerHTML;
},
set(newVal) {
document.querySelector('#name').innerHTML = newVal;
}
});
obj.name = "hello"
</script>
</html>更像是一个对象管家的角色,主要进行数据劫持再处理。如果调用obj.name实际是调用了get函数,而obj.name="hello"实际是调用了set函数,能够对对象进行更好的数据管控。
最后更新于