var b = document.getElementById('b')
var a = document.getElementById('a')
/** traditional
a.addEventListener('keyup', (e) => {
b.innerHTML = e.target.value
})
a.value = 'fangbinwei'
**/
// 初始值应该由compiler 绑定到html视图
var obj = {inputValue: 'fangbinwei'}
//发布者当数据变化时通知订阅者
Object.defineProperty(obj, 'inputValue', {
set: function(newValue) {
//应该由dep 通知watcher watcher更新视图
a.value = newValue
b.innerHTML = newValue
}
})
// 通过事件监听实现双向绑定
document.addEventListener('keyup', (e) => {
obj.inputValue = e.target.value
})
// data
<input type="text" id="a" />
<span id="b"></span>