题解 | #双向绑定#

双向绑定

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

function defineProperty(person, key, val) {
  Object.defineProperty(person, key, {
    get: function () {
      return val
    },
    set: function (newVal) {
      if (val !== newVal) {
        val = newVal;
        _render(ul);
      };
    }
  })
}

for (let key in person) {
  defineProperty(person, key, person[key])
}

inp.oninput = function () {
  person.weight = inp.value
}

此处最需要注意的是直接使用Object.defineproperty设置监听对象是get()的栈溢出问题,使用闭包处理一下即可

ps:严格来说还需要判断下person的是否为对象,此处没作处理

全部评论

相关推荐

06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
兄弟们,实习都是在接各种api,该怎么包装简历
仁者伍敌:感觉我自己做小项目也是各种api啊,我要怎么包装简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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