js实现数据双向绑定,需要用到Object.defineProperty()这个对象方法,这是一个比较神奇的方法,它的作用是用于配置对象值的属性,比如:对象的某个属性是否可配置、可读写、可枚举等。它也是vue框架底层,实现数据双向绑定的核心方法。
重写对象属性的setter、getter用Object.defineProperty()创建一个全局对象obj,并设置一个属性name,然后重写这个属性的get、set方法。在设置obj对象name属性值时,set方法会自动调用;在读取obj对象name属性时,get方法会自动调用。
监听文本框数据事件,并更新数据绑定文本框的输入事件,在事件中设置obj对象的name值,此时set方法会自动调用,在set方法中,拦截数据val,把val的值赋给name属性,并更新span元素显示name的值。
运行效果如下:
可以看到,对象obj的name属性值,在随着文本框内容的改变而改变。
改变对象属性值,更新文本框显示在set方法中,监听到obj对象name属性值的改变,拦截数据val,把数据更新到文本框中显示。
运行并改变obj的name值,效果如下:
可以看到,在控制台中,改变obj的name属性值,左边文本框中的内容也发生了改变,这样,大家就实现了一个简单的,数据双向绑定操作。
完整代码截图:
码字、做图不易,觉得不错的盆友,望多点赞转发,谢谢支持。