vue双向数据绑定原理

vue双向数据绑定的底层原理
object这个对象有个方法,叫做defineProperty,当数据发生访问或者修改,它都能够监测到,就是做到了一个数据劫持
一旦数据变化,他就会立即通知相关DOM更新页面,这个就用到了发布订阅者模式

<!-- Object.defineProperty -->
<!-- 数据劫持 -->
<!-- 发布订阅者模式 -->
<script>
  var book = {};
  var name = "";
  // 参1: 要给哪个对象设置属性
  // 参2: 属性名称是啥
  // 参3: 对象, 封装set和get方法
  Object.defineProperty(book, "name", {
    // 一旦修改了属性, 就会走到set方法中, value表示修改的内容
    // book.name = "xxx"
    set: function (value) {
      name = value;
      // 检测到数据变化的时候, 更新一下dom
      $("h1").text(value);
      $("input").val(value)
    },

    // 一旦读取属性, 就会走到get方法中
    // book.name
    get: function (value) {
      return name;
    }
  });

  //input事件: 只要文本框内容发生了变化, 就会执行回调函数
  $("input").on("input", function () {
    book.name = $(this).val(); //返回值, 决定了将来调用book.name返回的值
  });

  var num = 0;
  $("button").click(function () {
    book.name = num++;

    console.log(book.name);
  });
</script>

注:
1.发布订阅者模式
在这里插入图片描述
2.双向数据绑定指令:v-model
3.从浅层次上来说,v-model是 v-bind(数据变->文本框变) 和 v-on的change事件(文本框变->数据变) 的结合体

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值