Object.defineProperty实现双向绑定的原理

<input type="text">
<span id="text"></span>
<script>
/*
    * Object.defineProperty()方法会直接定义或修改一个新对象并返回这个对象
    * Object.defineProperty('需要定义属性的当前对象','需要定义的名称','属性描述')*/
 var text = document.getElementById('text');
var data = {};
 var value = '';//全局变量用于set和get
Object.defineProperty(data, "name", {
        //获取getter
        get(){
            return value;
        },
    //    监听数据发生变化,设置值
        set(val){
            console.log("val",val)
            text.innerText = val
            value = val;
        }

    })
 //监听input事件
    window.addEventListener('input',function (e) {
        data.name = e.target.value;

    })


</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容