let vm = new vue(
},method:
}})
首先該 name 屬性不是響應式資料的。
1、因為vue2.x內部是使用object.defineproperty()的getter和setter方法來進行資料監聽,然而新增的屬性name並沒有getter 和setter方法,所以資料不是響應式
要想設定成響應式也比較容易
方法1:預留乙個坑位類似於以下**:
let vm = new vue(
},method:
}})
原因:初始化的時候已經存在的屬性,vue中會使用object.defineproperty()方法對其進行監聽,所以該屬性有getter 和setter方法,所以資料就是響應式的
方法2:
vue官網給出一種解決的思路呼叫vue.set()就可以實現資料的響應式
呼叫方法:vue.set( target, key, value )
let vm = new vue(
},method:
}})
說明:
patch 函式接收兩個引數 oldvnode 和 vnode,它們分別代表新的節點和之前的舊節點。這個patch函式會比較 oldvnode 和 vnode 是否是相同的, 即函式 samevnode(oldvnode, vnode), 根據這個函式的返回結果分如下兩種情況
patchvnode 函式做的工作
1.找到對應的真實 dom,稱為 el
2.判斷 vnode 和 oldvnode 是否指向同乙個物件。
如果是,那麼直接 return(結束)。
3.判斷他們都有文字節點並且不相等,那麼將 el 的文字節點設定為 vnode 的文字節點。
4.判斷 oldvnode 有子節點而 vnode 沒有,則刪除 el 的子節點。
5.判斷 oldvnode 沒有子節點而 vnode 有,則將 vnode 的子節點真實化之後新增到 el
6.判斷兩者都有子節點,則執行 updatechildren 函式比較子節點。
hash:路由的雜湊(錨點)模式其實是利用了window可以監聽onhashchange事件,也就是說你的url中的雜湊值(#後面的值)如果有變化,前端是可以做到監聽並做一些響應(做點事情),這麼一來,即使前端並沒有發起http請求也能夠找到對應頁面的**塊進行按需載入
history模式:是利用pushstate||replacestate(+服務端)以及popstate事件的監聽到狀態變更
說明:history模式需要服務端做配合將不存在路徑重定向到指定頁面,不然會出現404(找不到該頁面)pushstate方法不會觸發頁面重新整理,只是導致history物件發生變化,位址列會有反應
面試官常問的設計模式
設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀態模...
面試官常問的集合框架問題(一)
有關集合框架問題 一 list 集合 1 迭代器的remove方法與集合的remove的區別?只需要了解迭代器在記憶體的執行 指標 迭代器與集合是兩個物件,如果說在迭代器中呼叫集合中的remove方法,會報currentmodifyexception錯誤。2 array與arraylist的有何區別...
面試官常問的 web前端 問題(四)
vue 兩大特點 響應式程式設計 元件化 vue 的優勢 輕量級框架 簡單易學 雙向資料繫結 元件化 檢視 資料和結構的分離 虛擬 dom 執行速度快 mvvm 是 model view viewmodel 的簡寫,模型 檢視 檢視模型。模型 指的是後端傳遞的資料 資料 json 檢視 指的是所看到...