vue的響應式是如何實現的?
聽過太多回答,通過object.defineproperty
,可是再詳細的問時,對方渾然不知。
先擼為敬
const observer = function(data)
}const definereactive = function(obj, key) ,
set(newval)
val = newval;
// 當值發生變更時,通知依賴收集器,更新每個需要更新的watcher, // 這裡每個需要更新通過什麼斷定?dep.subs
dep.notify();
} });
}const observe = function(data)
const vue = function(options)
// 掛載函式 this.mount = function()
// 渲染函式 this.render = function()
} // 監聽this._data
observe(this._data);
}const watcher = function(vm, fn)
// 更新方法,用於觸發vm._render this.update = function()
// 這裡會首次呼叫vm._render,從而觸發text的get // 從而將當前的wathcer與dep關聯起來 this.value = fn();
// 這裡清空了dep.target,為了防止notify觸發時,不停的繫結watcher與dep, // 造成**死迴圈
dep.target = null;
}const dep = function()
} // 為當前收集器新增watcher this.addsub = function(watcher)
// 通知收集器中所的所有wathcer,呼叫其update方法 this.notify = function() }}
const vue = new vue(;
}})vue.mount(); // in get
vue._data.text = '123'; // in watcher update /n in get 複製**
這裡我們用不到100行的**,實現了乙個簡易的vue響應式。當然,這裡如果不考慮期間的過程,我相信,40行**之內可以搞定。但是我這裡不想省略,為什麼呢?我怕你把其中的過程自動忽略掉,怕別人問你相關東西的時候,明明自己看過了,卻被懟的啞口無言。總之,我是為了你好,多喝熱水。
dep的作用是什麼?
依賴收集器,這不是官方的名字蛤,我自己起的,為了好記。
用兩個例子來看看依賴收集器的作用吧。
希望通過這兩個例子,你已經大概清楚了dep
的作用,有沒有原來就那麼回事的感覺?有就對了。總結一下吧(以下依賴收集器實為dep
):
本文**掘金
當面試官問 你還有什麼想問的嗎 時,應該問什麼
經常面試別人,聽到各種不同的版本,最後這個環節,hr很有心機的問出這個問題,每個人的反應都是不一樣的。先舉乙個差點要被錄取,回答完這個問題後直接送走的勵志故事,這位仁兄是這樣問的 公司加班嚴重嗎?加班費怎麼算,這個我覺得還是說明白好。耐心回答下 聽說網際網路公司現在流行境外旅遊的福利,咱們也是網際網...
當面試官問你為什麼換工作的時候,你會怎麼回答?
其實換工作原因無非就幾點 薪資沒有達到期望值 與領導或同事相處不愉快 覺得自己是在浪費生命,沒有實現自己的人生價值。本來個人覺得這問題沒什麼可問的,可為什麼我以前面試的時候,老是碰到有人問這個問題?面試官們,你們到底想從這個問題中了解什麼呢?我如果告訴你我是因為 原因離職,那你是否覺得我太勢利,這種...
摘錄 面試官也許會這樣問你
回答樣本一 我對工資沒有硬性要求,我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。回答樣本二 我受過系統的軟體程式設計的訓練,不需要進行大量的培訓,而且我本人也對程式設計特別感興趣。因此,我希望公司能根據我的情況和市場標準的水平,給我合理的薪水。回...