①所有引用型別(函式,陣列,物件)都擁有__proto__屬性(隱式原型)
②所有函式擁有prototype屬性(顯式原型)(僅限函式)
③原型物件:擁有prototype屬性的物件,在定義函式時就被建立
內部函式訪問外部函式中的變數,這個變數始終儲存在記憶體中,不會隨著函式的結束而自動銷毀。1.例項的隱式原型指向它建構函式的顯式原型
2查詢屬性,如果本身沒有,則會去__proto__中查詢,也就是建構函式的顯式原型中查詢。
如果建構函式中也沒有該屬性,因為建構函式也是物件,也有__proto__,那麼會去它的顯式原型中查詢,一直到null,如果沒有則返回undefined
1.匿名自執行函式
2.快取
3.實現封裝
4.實現物件導向
ps:匿名函式:1.實現閉包
2.模擬塊級作用域,減少全域性變數,降低命名衝突
堆:引用型別的值1.跨域:協議名(http/https),網域名稱,埠號有乙個不同源就是跨域
2.拒絕跨域原因:①跨域可以請求的話,很多伺服器會遭受額外攻擊
②可以在別人的**裡攻擊其他伺服器
③瀏覽器是客戶端,會導致伺服器流量過大
3.方法:①jsonp跨域(只有get請求)
②cors設定請求頭
③document.domain
④postmessage
深拷貝:json.parse(json.stringify)
1.全域性環境下,this指向window
2.物件呼叫函式時,this指向當前物件
3.建構函式中,如果返回物件,this指向這個物件,否則指向函式例項
- dns網域名稱解析(網域名稱還原為ip位址)
- tcp連線
- http請求
- 處理請求返回http響應
- 頁面渲染
- 關閉連線
本質:是通過資料劫持結合發布者-訂閱者模式的方式來實現的。1.methods呼叫函式加()
2.computed如果相關依賴不發生改變,就會一直沿用第一次的值
3.methods是實時的,在重新渲染時函式會重新呼叫執行
資料劫持:object.defineproperty用set,get方法實現重寫
發布者-訂閱者模式:
1.實現乙個***observer,用來劫持並監聽所有屬性,如果有變動的,就通知訂閱者。2.實現乙個訂閱者watcher,可以收到屬性的變化通知並執行相應的函式,從而更新檢視。
3.實現乙個解析器compile,可以掃瞄和解析每個節點的相關指令,並根據初始化模板資料以及初始化相應的訂閱器。
mvvm 是 model-view-viewmodel 的縮寫。
model代表資料模型,也可以在model中定義資料修改和操作的業務邏輯。
view 代表ui 元件,它負責將資料模型轉化成ui 展現出來。
viewmodel 監聽模型資料的改變和控制檢視行為、處理使用者互動,簡單理解就是乙個同步view 和 model的物件,連線model和view。
在mvvm架構下,view 和 model 之間並沒有直接的聯絡,而是通過viewmodel進行互動,model 和 viewmodel 之間的互動是雙向的, 因此view 資料的變化會同步到model中,而model 資料的變化也會立即反應到view 上。
viewmodel 通過雙向資料繫結把 view 層和 model 層連線了起來,而view 和 model 之間的同步工作完全是自動的,無需人為干涉,因此開發者只需關注業務邏輯,不需要手動操作dom, 不需要關注資料狀態的同步問題,複雜的資料狀態維護完全由 mvvm 來統一管理。
web前端面試總結
因為最近在找工作,所以避免不了的就是面試,關於面試的話,其實不僅僅只是知道做面試題這麼簡單,因為我們要從公司的角度考慮問題。其實初級的程式設計師是最好塑造的,我的建議是不管你的薪水有多低,一定要以學習新知識為己任,多去嘗試不同方法,去適應不同的環境,做人做事都應該有乙個全新的認識。因為畢竟是工作,所...
web前端面試總結
1 meta中的reffer 2 img中的src無法載入 1 盒模型 負邊距布局 四個子元素的寬度加上三列間隔的寬度 聖杯布局 雙飛翼布局,元素雖然在後面,但是可以通過負邊距顯示在前面 負邊距絕對定位居中 2 webkit text size adjust 3 文字截斷處理 4 flex布局 5 ...
web前端面試(1)
1 https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。2 http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。3 http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。4 http的連線很簡單,是無狀態的 h...