<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>双向绑定</title>
</head>
<body>
<label>输入:</label><input type="text" id="demo1"><br/>
</body>
</html>
<script>
var a={};
var demo1=document.querySelector('#demo1');
Object.defineProperty(a,'b',{
set:function(val){
demo1.value = val
//此时在浏览器输入demo1.value将输出最新结果
}
})
demo1.onkeyup=function(){
a.b=demo1.value;
//此时在浏览器输入a.b将输出最新结果
}
</script>
问题
1.初始化对象值不能触发set方法
原因Object.defineProperty设置的属性会覆盖同名属性
2.不能在set方法里设置当前的属性值.会报栈溢出.
原因是会造成死循环.
优化
set方法中过滤 新旧属性值相同的情况.
….