美文网首页
学习vue的响应式 mvvm -01 数据响应式

学习vue的响应式 mvvm -01 数据响应式

作者: 江川哇 | 来源:发表于2021-10-25 17:23 被阅读0次

理解VUE的设计思想:VUE的核心是 MVVM

MVVM框架的三要素:数据响应式 模板引擎以及渲染

数据响应式:监听数据的变化在视图中更新

Object.defineProperty()

Proxy

//对象响应式原理

//1 Object.defineProperty()

function defineReactive(obj, key, val) {

  //val 可能是对象,需要递归处理

  observe(val)

  Object.defineProperty(obj, key, {

    get() {

      console.log('get', val)

      return val

    },

    set(newval) {

      if (newval != val) {

        observe(newval)

        console.log('set', newval)

        val = newval

      }

    },

  })

}

//对象响应式处理

function observe(obj) {

  //判断obj类型必须是对象

  if (typeof obj != 'object' || obj == null) {

    return

  }

  Object.keys(obj).forEach((key) => defineReactive(obj, key, obj[key]))

}

//设置新的属性 类似$set

function set(obj, key, val) {

  defineReactive(obj, key, val)

}

const obj = { name: 'aa', age: 11, baz: { a: 1 } }

observe(obj)

// obj.name

// obj.name = 'fffff'

//1 对象嵌套 就用到了递归,在defineReactive 里面再调用一次 observe(val)

// obj.baz.a

//2 这种情况 在set里面再调用一次observe(val)

//obj.baz={a:10}

//3 设置新的obj属性 类似$set

set(obj, 'dong', 'dong')

obj.dong

相关文章

  • 学习vue的响应式 mvvm -01 数据响应式

    理解VUE的设计思想:VUE的核心是MVVM MVVM框架的三要素:数据响应式 模板引擎以及渲染 数据响应式:监听...

  • vue双向绑定原理

    理解vue的设计思想 MVVM模式 MVVM框架的三要素:数据响应式、模版引擎及其渲染 数据响应式:监听数据变化并...

  • Vue源码03-响应式原理

    这节将专门讲解vue MVVM响应式处理 Vue采用的是 实现数据的响应式 数据劫持 Observer类 Obse...

  • Vue的34道题

    1、如何理解MVVM原理? MVVM的实现原理 2、响应式数据的原理是什么? 响应式数据与数据依赖基本原理vue双...

  • 前端面试题【Day02】

    本篇绪论 1,Vue响应式原理 1,Vue响应式原理 在vue实例中声明的数据就是响应式的。响应式:数据发生改变,...

  • 手写简单Vue

    理解Vue的设计思想 MVVM框架的三要素:数据响应式、模板引擎及其渲染 数据响应式:监听数据变化并在视图中更新O...

  • Vue.js入门(一):模板语法、计算属性/监听器

    1 Vue 设计思想 数据驱动应用 MVVM模式:Vue完成ViewModel功能:响应式:监听数据变化模板引擎:...

  • 2020-12-25

    Vue数据响应式 响应式:当一个物体对外界刺激做出反应,就是响应式。例如:我打你一拳你知道躲。 Vue 数据响应式...

  • 03Vue源码实现

    Vue 源码实现 理解 Vue 的设计思想 MVVM 模式 MVVM 框架的三要素:数据响应式、模板引擎和渲染 数...

  • vue源码之数据绑定

    Vue.js是一款MVVM框架,上手快速简单易用,通过响应式在修改数据的时候更新视图。Vue.js的响应式原理依赖...

网友评论

      本文标题:学习vue的响应式 mvvm -01 数据响应式

      本文链接:https://www.haomeiwen.com/subject/huplnltx.html