vue面試總結2

寫 React / Vue 項目時爲何要在組件中寫 key,其做用是什麼

第一題:key的做用是爲了在diff算法執行時更快的找到對應的節點,提升diff速度。javascript

另外一種方式實現vue的響應式原理

Proxy在目標對象以前架設一層「攔截」,外界對該對象的訪問都必須先經過這層攔截,所以提供一種機制,能夠對外界的訪問進行過濾和改寫。vue

<input type="text" id="txt" />
<div id="show"></div>
<script type="text/javascript">
  var inp = document.getElementById('txt');
  var show = document.getElementById('show')
  var obj = {}
  var objKey = 'text'; // 將鍵保存起來
  // Object.defineProperty
  Object.defineProperty(obj, objKey, {
    get: function(){
      return obj[objKey];
    },
    set: function(newVal){
      show.innerHTML = newVal
    }
  })
  inp.addEventListener('keyup', function(e){
    obj[objKey] = e.target.value
  })
  
  // proxy的實現
  const newObj = new Proxy(obj, {
    get: function(target, key, receiver){
      return Reflect.get(target, key, receiver);
    },
    set: function(target, key, value,receiver){
      if(key === objKey){
        show.innerHTML = value
      }
    }
  })
  inp.addEventListener('keyup',function(e){
    newObj[objKey] = e.target.value;
  })

Object.defineProperty的缺點:
1.不能檢測到增長或刪除的屬性
2.數組方面的變更,如根據索引改變元素,以及直接改變數組長度時的變化,不能被檢測到。java

Axios的封裝

https://juejin.im/post/5b55c1...ios

Vue computed 實現

diff 算法實現

Vue complier 實現

相關文章
相關標籤/搜索