vue的双向数据绑定

vue的双向数据绑定

  1. vue的双向数据绑定的原理
    Object.defineProperty()
  2. vue双向数据绑定的具体实现

1. vue的双向数据绑定的原理

1. Object.defineProperty() 是什么

Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象
对象–属性,返回对象
有两个描述属性:
get: 读取name属性这个值触发的函数
set:设置name属性触发的函数

  1. 数据劫持 + 发布者-订阅者模式
    数据劫持:
var Book = {}
var name = ''
Object.defineProperty(Book, 'name', {
	set: function(value) {
		name = value;
		console.log('设置属性的时候' + value)
	},
	get: function() {
		return '《' + name + '》'
	}
})
Book.name = ‘Vue权威指南’ // 设置属性的时候会触发set
console.log(Book.name)  // 读取属性的时候会触发get

双向数据绑定

  1. view变化 data变化 ==》事件监听。类似input

  2. data变化view变化 ==》向set内设置更新后的数据。因为设置属性的时候会触发

  3. Observer 劫持监听 =》 设置一个监听器 Observer。属性变化,告诉订阅者watcher是否需要更新
    Watcher 订阅者 =》每一个Watcher都绑定一个更新函数,watcher收到属性变化的通知并执行相关的函数,从而更新视图
    Compile 解析器 =》扫描和解析节点的相关指令(v-model、v-on)如果节点存在v-model、v-on等指令,解析器Compile初始化这类节点的模板数据,使之可以显示在视图上,然后初始化相应的订阅者(Watcher)

    指令解析器Compile将相关指令初始化为一个订阅者watcher

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值