- Vue 响应式基本原理
const data =  {}
let name = 'zhangsan'
Object.defineProperty(data, 'name', {
  get: function () {
    console.log('get');
    return name
  },
  set: function (newVal) {
    console.log('set');
    name = newVal
  }
})
console.log(data.name); 
data.name = 'lisi'  
   - Object.defineProperty 缺点 
  
- 深度监听,需要递归到底,一次性计算量很大
 - 无法监听新增属性 / 删除属性(vue.set / Vue.delete)
 - 无法原生监听数组,需要特殊处理
    - 用 JS 模拟 DOM 结构
<div id="div1" class="container">
  <p>vdom</p>
  <ul style="font-size: 20px;">
    <li>a</li>
  </ul>
</div>
  {
  tag: 'div',
  props: {
    className: 'container',
    id: 'div1'
  },
  children: [
    {
      tag: 'p',
      children: 'vdom'
    },
    {
      tag: 'ul',
      props: { style: 'font-size: 20px'},
      children: [
        {
          tag: 'li',
          children: 'a'
        }
      ]
    }
  ]
}
    
                
                
                
        
        
    
 
 |