题解 | #双向绑定#

双向绑定

https://www.nowcoder.com/practice/d1452ec52a134b328f23b97c02b230bd

思路:遍历对象obj的每一个键,然后对该键设置Object.defineProperty方法进行监听,其中处理对象中,get方法直接返回键所对应的值,set方法直接将键设置为新值,并且触发_render函数进行渲染。当渲染时,将person. weight绑定到inp.value;当输入时,将inp.value绑定到person.weight。

<script>
  var ul = document.querySelector('ul');
  var person = { sex: '男', age: '25', name: '王大锤', height: 28, weight: 32 };
  var inp = document.querySelector('input');
  inp.value = person.weight;
  const _render = () => {
     var str = `<li>姓名:<span>${person.name}</span></li>
         <li>性别:<span>${person.sex}</span></li>
         <li>年龄:<span>${person.age}</span></li>
         <li>身高:<span>${person.height}</span></li>
         <li>体重:<span>${person.weight}</span></li>`
     ul.innerHTML = str;
     //将person.weight绑定到inp.value
     inp.value = person.weight;
  }
  _render(ul);
  inp.oninput=function()
  {
     //将inp.value绑定到person.weight
     person.weight = inp.value;
     _render(ul);
  }
  function observe(obj)
  {
     for(let key in obj)
     {
        let value=obj[key]
        Object.defineProperty(obj,key,{
           get()
           {
              return value
           },
           set(newValue)
           {
              value=newValue
              _render(ul)
           }
        })
     }
  }
  observe(person)
</script>

总结:双向绑定指的是,其中任意一个改变都会影响到另外一个,其中input框可以使用input事件监听,而person可以使用Object.defineProperty方法监听。

#双向绑定#
前端js面试 文章被收录于专栏

前端js面试,帮助你更好的理解js。

全部评论

相关推荐

迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务