Create by jsliang on 2019-2-11 15:30:34
Recently revised in 2019-3-17 21:30:36
Hello 小伙伴們,如果覺得本文還不錯,記得給個 star , 小伙伴們的 star 是我持續(xù)更新的動力!GitHub 地址
并不是只有特定的季節(jié)才能跑路,只因為人跑得多了,這條路就定下來了。
金三銀四跳槽季,jsliang 于 2019年2月11日 寫下了這篇文章,開始準備自己的面試之旅。
至 2019年3月17日 為止,jsliang 搭建出個人的面試知識體系,海量地翻閱了一些前輩留下的資料,結(jié)合個人需求進行了幾場面試,從而進一步完善該文章并進行了發(fā)表,希望對準備跳槽或者正在跳槽中的小伙伴有所幫助。
一 目錄不折騰的前端,和咸魚有什么區(qū)別
目錄 |
---|
一 目錄 |
二 前言 |
?2.1 自我介紹 |
?2.2 跳槽原委 |
?2.3 進擊目標 |
?2.4 開篇點題 |
三 HTML |
?3.1 HTML 學(xué)習(xí)推薦 |
?3.2 HTML 語義化 |
?3.3 HTML5 新標簽 |
?3.4 常見瀏覽器及其內(nèi)核 |
?3.5 cookies、session、sessionStorage、localStorage |
四 CSS |
?4.1 CSS 學(xué)習(xí)推薦 |
?4.2 CSS reset |
?4.3 CSS 盒模型 |
?4.4 CSS 單位 |
?4.5 CSS 選擇器 |
?4.6 CSS 常見布局 |
?4.7 CSS3 新特性 |
?4.8 BFC |
?4.9 行內(nèi)元素和塊級元素 |
?4.10 行內(nèi)樣式、內(nèi)嵌式、鏈接式以及導(dǎo)入式 |
?4.11 水平垂直居中 |
五 JavaScript |
?5.1 JS 學(xué)習(xí)推薦 |
?5.2 JS 引用方式 |
?5.3 原型與原型鏈 |
?5.4 作用域與閉包 |
?5.5 淺拷貝與深拷貝 |
?5.6 模塊化與組件化 |
?5.7 面向?qū)ο笈c面向過程 |
?5.8 防抖與節(jié)流 |
?5.9 ES6 |
?5.10 數(shù)組操作 |
六 Vue |
?6.1 MVVM |
?6.2 生命周期 |
?6.3 雙向數(shù)據(jù)綁定 |
?6.4 Virtual DOM |
?6.5 template 編譯 |
?6.6 key |
?6.7 nextTick |
?6.8 父子組件通訊 |
七 微信小程序 |
?7.1 文件主要目錄及文件作用 |
?7.2 微信小程序生命周期 |
?7.3 如何封裝數(shù)據(jù)請求 |
?7.4 頁面數(shù)據(jù)傳遞 |
?7.5 加載性能優(yōu)化的方法 |
?7.6 微信小程序與原生 APP、Vue、H5 差異 |
?7.7 微信小程序原理 |
八 瀏覽器 |
?8.1 瀏覽器解析 URL |
?8.2 重繪與回流 |
?8.3 數(shù)據(jù)存儲 |
?8.4 內(nèi)存管理與垃圾回收 |
?8.5 內(nèi)存泄漏 |
九 網(wǎng)絡(luò)協(xié)議 |
?9.1 網(wǎng)絡(luò)分層 |
?9.2 HTTP/HTTPS |
?9.3 HTTP 狀態(tài)碼 |
?9.4 TCP 三次握手與四次揮手 |
十 性能優(yōu)化 |
?10.1 HTML 優(yōu)化 |
?10.2 CSS 優(yōu)化 |
?10.3 JavaScript 優(yōu)化 |
十一 算法 |
十二 其他 |
十三 總結(jié) |
十四 參考文獻 |
?14.1 關(guān)于面試 |
?14.2 關(guān)于 HTML |
?14.3 關(guān)于 CSS |
?14.4 關(guān)于 JS |
?14.5 關(guān)于其他 |
十五 網(wǎng)友反饋 |
返回目錄
請時刻準備好自己的簡歷,不管是互聯(lián)網(wǎng)經(jīng)濟不佳面臨裁員,還是因為公司內(nèi)部斗爭嚴重心亂如麻,還是因為厭倦了目前的一切……只有隨時更新自己,把自己的簡歷準備好,你才知道哪一刻跑路是最佳選擇。
2.1 自我介紹返回目錄
Hello 小伙伴們好,我叫梁峻榮,網(wǎng)名叫 jsliang,由于崇拜前端大佬 技術(shù)胖(jspang)的原因,又因為自己學(xué)的是前端(JavaScript),所以給自己取了個 jsliang(JavaScriptLiang) 的網(wǎng)名,希望自己能通過建立自己的前端知識體系,從而在前端路上走得更遠。并將自己的經(jīng)驗分享給小伙伴,攜手小伙伴們一起前行。
下面是講講個人故事:
首先,jsliang 高考后的暑期就聽大學(xué)師兄的建議,開始學(xué)習(xí)編程,那時候?qū)W習(xí)了 C 語言,覺得世界上最神奇的事情不過如此,敲兩下鍵盤,按下回車,電腦就會一閃一閃地響應(yīng)我們!于是在大學(xué)的時候,陸陸續(xù)續(xù)學(xué)過 C、C#、.Net 等……。
-_-|| 由于學(xué)得都是基礎(chǔ),又都還給老師了,在這里就不多累述了。
然后,在大二就開始接觸 HTML,那時候選修了個《網(wǎng)頁設(shè)計基礎(chǔ)》,跟著老師做了個只有幾個頁面的靜態(tài)網(wǎng)站。在大三的時候,參加了學(xué)校的特訓(xùn)班,分角色按流程從頭到尾做了個包含角色管理、購物等功能的網(wǎng)站。同時,由于在特訓(xùn)班的時候,看到后端使用 ThinkPHP(簡稱 TP),覺得蠻不錯的,于是自己搗鼓,使用 TP 3.2.3 + Bootstrap 3 + MySQL 打造了自己的博客(已下線)。
接著,由于選修了門 Node.js 的課,所以也跟著大佬的步伐接觸了下 Vue、Koa 這些,那時候?qū)?npm 等諸多不懂,為了折騰這個,我的前端世界自此打開了個大門。
最后,我在自己的畢業(yè)設(shè)計中使用 Node.js + Vue + ElementUI + MongoDB 打造了個校園外賣、快遞代拿等功能的社區(qū)單頁應(yīng)用。
在 2018 年 5 月的時候,家里催促,于是直接出來面試。不像其他大佬的畢業(yè)等于失業(yè),很幸運地 jsliang 面試第一家就給了 offer,于是就進了這家公司,那時候感覺自己前面的大學(xué)生活白過了,只懂 ES5、jQuery、HTML/HTML5、CSS/CSS3 的皮毛。
在熟悉了三個月的業(yè)務(wù),公司給的任務(wù)能順利完成后,我覺得自己不夠努力:外面的前端翻天覆地,我的技術(shù)卻只是 jQuery is all!
于是 2018 年 8 月,jsliang 開始寫 Markdown,將 5 月份到 8 月份記錄到 Word 文檔上的筆記整理成了 jsliang 的文檔庫,并在 jsliang 的掘金 上發(fā)表了第一篇文章。
18 年 8 月至今,jsliang 大致經(jīng)歷了以下這些:
學(xué) Webpack,并用 Webpack 構(gòu)建一個多頁面配置。然后幸運的是,剛好碰到公司的一個仿站任務(wù),于是整個前端小組直接用了我的 Webpack + jQuery + VS Code 的 Live Share 套路進行協(xié)同開發(fā)!
學(xué) 微信小程序,并將它應(yīng)用到電信開發(fā)的微信小程序項目翼小微中。
學(xué) ECharts 報表,并用它做了個 Vue + ECharts 的報表,來展示愛音樂公司的運營數(shù)據(jù)。
學(xué) Node,然后搭了個企業(yè)網(wǎng)站(company.jsliang.top),并寫了篇小文章(目前最高成就,獲得了 1100 多贊)。
學(xué) Vue,由于之前學(xué)的 Vue,在工作上有好多沒有,逐漸淡忘了,所以從基礎(chǔ)開始,準備寫一套《Vue 從 0 到 1》。
以上,就是 jsliang 的編程生涯。
今兒,在這里寫寫 jsliang 為了跳槽,根據(jù)個人想法進行的一些前端面試資料整理,小伙伴們覺得不錯的點個贊或者去 GitHub 點個 star,覺得有誤請指出,謝謝~
2.2 跳槽原委返回目錄
馬老板曾經(jīng)說過,跳槽有兩個原因:
錢沒給到位。
心被委屈了。
首先,如果非要給 jsliang 我自己的跳槽定個位,那肯定是錢沒給到位,勞動與產(chǎn)出不成正比。在我 2018 年 5 月入職前,與人事的交談中了解到每年的 8 月和 2 月可以提薪,當初的技術(shù)棧是:HTML、CSS、ES5。
然后,2018 年 6 月到 2019 年 1 月,學(xué)習(xí)并應(yīng)用到工作中的技術(shù)有:
jQuery
Webpack
JSP
微信小程序
Vue
ECharts
其中 2018 年 8 月剛轉(zhuǎn)正,也不敢說自己技術(shù)進步很大,也不敢說自己項目貢獻很大,為公司謀了多大利益,所以沒有提薪想法。
2019 年 1 月底感覺自己項目也做了,凌晨 4/5/6 點的體育西路也看過了,技術(shù)也提升了,于是跟人事交談,期望 2 月能加薪,人事表示年終述職演講得好的給提薪,2 月開工的時候表示提薪名單沒我份……
你沒看錯,提薪全靠 PPT。PPT 里提高了不給,沒提就是沒有。
當初想法很簡單,你隨便加個 5/600 我也滿足了。
最后,jsliang 曾跟項目總監(jiān)私下談話,建議可以發(fā)展一些新產(chǎn)品,這樣公司或許能獲取一些新收入,我也可以進一步挑戰(zhàn)我的技術(shù)。但是,由于我司是個老牌子公司,并且大部分依賴于接手電信項目進行擴張……
enm...所以心也委屈了。
2.3 進擊目標在 2018 的努力下,GitHub 破 600 近 700 star,掘金破 10 萬閱讀量,3000 粉絲:
GitHub 見證:點擊查看
掘金見證:點擊查看
返回目錄
目標城市:廣州
目標薪資:10K - 15K
目標技術(shù):
1. 熟悉 HTML/HTML5、CSS/CSS3、ES5/ES6。 2. 了解 OOP 概念,并嘗試在工作中使用過 OOP 技巧。 3. 對 MVC/MVVM 架構(gòu)有一定了解,如有 Vue/React/Angular 或者 微信小程序開發(fā)經(jīng)驗更佳。 4. 使用過 Bootstrap 或者 ElementUI 等 UI 庫,并對前端 UI 庫有一定的個人理解。 5. 了解 Git、Webpack 等工具。 6. 對 Java、Node.js 等后端編程有一定了解。 7. 一年及以上工作經(jīng)驗。
廣州前端分析:
廣州 13K 薪資要求:
2/3 年工作經(jīng)驗。
熟悉 OOP,并能在工作中使用,且能獨立開發(fā)插件等……
你可以不懂 Vue,但 React 你必須得會!
廣州 15k+ 薪資要求:
5 年+ 工作經(jīng)驗。
全能,懂前端,熟悉后端,能寫文檔……
帶領(lǐng)過小隊進行開發(fā)。
廣州異常偏科公司:
要求必須懂后端。
要求必須懂安卓或者 IOS 開發(fā)。
要求必須精通 jQuery 全家桶(jQuery UI、jQuery Mobile 等……)。
2.4 開篇點題該分析數(shù)據(jù)來自 Boss 直聘
返回目錄
本文的知識點將涉及 HTML、CSS、JS、HTTP、Vue、Webpack、打包工具、性能優(yōu)化等,沒有前置條件,看得懂可以瞅瞅復(fù)習(xí)下,看不懂可以瞅瞅?qū)W習(xí)下。
關(guān)于面試,在這記下慕課網(wǎng)視頻看到的,個人非常認同的三個問答:
問:拿到一個面試題,第一時間看到什么? 答:考點
問:如何看待網(wǎng)上搜出來的永遠看不完的題海? 答:不變應(yīng)萬變
問:如何對待面試題? 答:題目到知識再到題目
然后在復(fù)習(xí)面試題的過程中,個人有些小看法:
個人感言一:為什么我總是比不上別人優(yōu)秀?
當編寫業(yè)務(wù)代碼中,碰到某個業(yè)務(wù) bug 時,我會習(xí)慣性地百度這個業(yè)務(wù) bug,看看網(wǎng)友是怎么解決的。但是,學(xué)霸級的程序猿,會多走一步,他們會思考產(chǎn)生這個業(yè)務(wù) bug 的底層原因是什么,下次碰到類似的是如何應(yīng)用該技術(shù)解決。所以,日積月累,我的確比不上人家了。
個人感言二:辭職并不是件便捷的事。
way 1:面試成功,跟自己公司遞辭呈,走流程,同時跟對面 hr 申請一個月后入職。
way 2:面試成功,跟自己公司遞辭呈,詢問能不能快速離職,收到回復(fù)跟對面 hr 確認時間。【推薦】
way 3:先遞辭呈,同時面試,面試成功的,一律申請走完原公司一個月的流程之后的日子入職。
jsliang 于 2 月底拿到 offer 并遞交辭呈,3 月 - 4 月進入一個月倒計時,4 月第一周才能拿到離職證明。
最后在這里祝各位小伙伴能找到稱心如意的工作~
三 HTML返回目錄
HTML 屬于結(jié)構(gòu)層,負責描繪出內(nèi)容的結(jié)構(gòu)。
CSS 屬于表示層,負責如何顯示有關(guān)內(nèi)容。
JavaScript 屬于行為層,負責內(nèi)容應(yīng)如何對事件做出反應(yīng)。
3.1 HTML 學(xué)習(xí)推薦返回目錄
《前端工程師手冊》
《HTML 教程- (HTML5 標準) - 菜鳥教程》
3.2 HTML 語義化返回目錄
語義化的含義就是用正確的標簽做正確的事情,HTML 語義化就是讓頁面的內(nèi)容結(jié)構(gòu)化,它有如下優(yōu)點:
便于對瀏覽器、搜索引擎解析;
便于盲人瀏覽網(wǎng)頁;
便于閱讀源代碼的人對網(wǎng)站進行分開,維護和理解;
簡單來說,能用 返回目錄 HTML5 中新增標簽大致有: 返回目錄 國內(nèi)一些瀏覽器使用較多的是 Webkit 內(nèi)核。 針對不同瀏覽器內(nèi)核,HTML 辨別: IE 內(nèi)核瀏覽器識別: 非 IE 內(nèi)核瀏覽器識別: 針對不同瀏覽器內(nèi)核,CSS 辨別: 返回目錄
cookies:存儲于瀏覽器端的數(shù)據(jù)。可以設(shè)置 cookies 的到期時間,如果不設(shè)置時間,則在瀏覽器關(guān)閉窗口的時候會消失。
session:存儲于服務(wù)器端的數(shù)據(jù)。session 存儲特定用戶會話所需的屬性和配置信息。
cookies 和 session 的區(qū)別在于: cookies 數(shù)據(jù)存放在客戶的瀏覽器上,session 數(shù)據(jù)存放在服務(wù)器上。 前端都是裸君子,沒有安全可言,cookies 可能會被黑客利用作數(shù)據(jù)欺騙。所以重要信息記得存 session。 session 如果在生效期內(nèi)量過大,會占用服務(wù)器性能。 單個 cookies 保存的數(shù)據(jù)不能超過 4 K,很多瀏覽器限制一個站點保存最多 20 個 cookies。
sessionStorage:生命周期存在于標簽頁或窗口,用于本地存儲一個會話(session)中的數(shù)據(jù),這些數(shù)據(jù)會隨著窗口或者標簽頁的關(guān)閉而被清空。
localStorage:生命周期是永久的,除非用戶主動清除瀏覽器上存儲的 localStorage 信息,否則它將會永久存在。
sessionStorage 和 localStorage 操作方法:setItem、getItem 以及 removeItem。 以 localStorage 為例: 參考 1:《前端分享之cookie的使用及單點登錄》 返回目錄 HTML 屬于結(jié)構(gòu)層,負責描繪出內(nèi)容的結(jié)構(gòu)。 CSS 屬于表示層,負責如何顯示有關(guān)內(nèi)容。 JavaScript 屬于行為層,負責內(nèi)容應(yīng)如何對事件做出反應(yīng)。 返回目錄 《前端工程師手冊》 《CSS 權(quán)威指南》 《CSS 揭秘》 《CSS 世界》 返回目錄 在工作的過程中,會發(fā)現(xiàn)各式各樣的瀏覽器對某個標簽有自己獨特的樣式。 但是在前端開發(fā)中,如果不采用統(tǒng)一標準,那么會產(chǎn)生千奇百怪的 bug。所以為了減少后期 bug 的出現(xiàn),前端開發(fā)人員會重置一遍 CSS 樣式,盡可能地使開發(fā)的網(wǎng)頁在各個瀏覽器相差不大。 下面是 jsliang 在使用的樣式重置,當然如果小伙伴有不同的想法,可以去 百度/必應(yīng)/google 搜索并使用其他版本的樣式重置: jsliang 的 CSS 樣式重置 返回目錄 在工作的過程中,也許小伙伴需要 div 塊的總寬度為 100px,然后發(fā)現(xiàn)總是被 margin 撐高,這是因為盒模型定義的問題: CSS 中有個屬性叫 box-sizing。 border-box 中,整個 div 的寬、高,包括 margin、padding、border。 content-box 中,整個 div 的寬、高,則不包括上面元素。
如上圖,如果一個 div ,你的代碼如下: 那么,你的整個寬高還是 100px。 但是,如果你的代碼如下: 那么,你的整個盒子寬高是 120px。 如果你在設(shè)計頁面中,發(fā)現(xiàn)內(nèi)容區(qū)被撐爆了,那么,請檢查下現(xiàn)在的 border-box 是什么,最好在引用 reset.css 的時候,就對 border-box 進行統(tǒng)一設(shè)置,方便管理。 返回目錄 在 CSS 中,除了我們常用的 px,還有其他單位小伙伴們可以了解一下: 除此之外還有 pt、ex 等單位,但由于不太好換算,故在此不提。 返回目錄 選擇器是匹配元素的一種模式。 關(guān)于 CSS 解析器: HTML 經(jīng)過解析生成 DOM Tree;而在 CSS 解析完畢后,需要將解析的結(jié)果與 DOM Tree 的內(nèi)容一起進行分析建立一棵 Render Tree,最終用來進行繪圖。 Render Tree 中的元素與 DOM 元素相對應(yīng),但非一一對應(yīng):一個 DOM 元素可能會對應(yīng)多個 renderer,如文本折行后,不同的「行」會成為 render tree 種不同的 renderer。也有的 DOM 元素被 Render Tree 完全無視,比如 display:none 的元素。 在建立 Render Tree 時,瀏覽器就要為每個 DOM Tree 中的元素根據(jù) CSS 的解析結(jié)果來確定生成怎樣的 renderer。對于每個 DOM 元素,必須在所有 Style Rules 中找到符合的 selector 并將對應(yīng)的規(guī)則進行合并。選擇器的「解析」實際是在這里執(zhí)行的,在遍歷 DOM Tree 時,從 Style Rules 中去尋找對應(yīng)的 selector。 CSS 解析順序 在 CSS 的選擇器中,它會按照優(yōu)先級 從右向左解析,因為這樣匹配元素的時候,能盡量少地查找,所以選擇器最好寫地簡潔一點。 CSS 常用選擇器 通配符:* ID 選擇器:#ID 類選擇器:.class 元素選擇器:p、a 等…… 后代選擇器:p span、div a 等…… 偽類選擇器:a:hover 等…… 屬性選擇器:input[type="text"] 等…… 子元素選擇器:li:firth-child、p:nth-child(1) 等…… CSS 選擇器權(quán)重 !important -> 行內(nèi)樣式 -> #id -> .class -> 元素和偽元素 -> * -> 繼承 -> 默認 返回目錄 水平垂直居中。這種布局老生常談,jsliang 在本文也有提到,詳解請 點擊鏈接 兩列布局。一側(cè)固定,另一側(cè)自適應(yīng)。 三列布局。類似于兩列布局,新增多一個固定寬的 避免被寄刀片,附上 float 布局:《css常見布局》 返回目錄 經(jīng)典:CSS3 相關(guān)屬性你了解嗎,說說都有哪些?能說說你工作中常用的一些 CSS3 屬性嗎? 那么,CSS3 新特性都有哪些呢? transition:過渡 transform:旋轉(zhuǎn)、縮放、移動或者傾斜 animation:動畫 gradient:漸變 shadow:陰影 border-radius:圓角 為了方便記憶,咱將它們?nèi)拥酵粋€ HTML 文件上,小伙伴拷貝到本地上打開,可以看到一個擁有漸變的小球,做著橫向運動,如果你鼠標移動到它上面,它的寬度會放大,并且進行傾斜。 參考 1:《CSS3 圓角》 返回目錄 什么是 BFC? BFC 就是 塊級格式上下文,它是一個獨立的渲染區(qū)域,讓處于 BFC 內(nèi)部的元素和外部的元素相互隔離,使內(nèi)外元素的定位不會相互影響。 一定的 CSS 聲明可以生成 BFC,瀏覽器對生成的 BFC 有一系列的渲染規(guī)則,利用這些渲染規(guī)則可以達到一定的布局效果。 為什么需要 BFC 呢? 它可以防止 margin 元素重疊(div 中包含 ul,而 div 與 ul 之間的垂直距離,取決于 div、ul、li 三者之間的最大外邊距,這時候給 ul 一個 display:inline-block 即可解決這個問題) 清除內(nèi)部浮動(div 中包含 ul,而 ul 采用 float:left,那么 div 將變成一長條,這時候給 div 加上規(guī)則使其變成 BFC 即可) 如何產(chǎn)生 BFC? display: inline-block position: absolute/fixed 工作中一般可能不會顧及這個: float 很少使用了,盡可能使用 flex css reset 一般會清除掉一些問題,減少 BFC 的使用。 參考文獻:《我對BFC的理解》 返回目錄 返回目錄 行內(nèi)元素:寬度和高度由內(nèi)容決定,與其他元素共占一行的元素,我們將其叫行內(nèi)元素。例如:、、 等…… 塊級元素:默認寬度由父容器決定,默認高度由內(nèi)容決定,獨占一行并且可以設(shè)置寬高的元素,我們將其叫做塊級元素。例如: 、 在日常開發(fā)中,我們經(jīng)常使用 CSS 的 display 屬性來打破兩者的壁壘:display: inline-block,使它們擁有更多的狀態(tài)。 返回目錄 在引用 CSS 上,分為四種形式:行內(nèi)樣式、內(nèi)嵌式、鏈接式以及導(dǎo)入式,下面介紹這四種模式。 行內(nèi)樣式 直接對 HTML 的標記使用 style 屬性,然后將 CSS 代碼直接寫進去: 內(nèi)嵌式 將 CSS 寫 與 之間,并且用 和 標記進行聲明: 鏈接式 通過將 上的 CSS 提起到指定的 CSS 文件上,然后通過 的方式在 HTML 上鏈接起來。 導(dǎo)入樣式 各種方式的優(yōu)先級 在優(yōu)先級上,行內(nèi)樣式 > 鏈接式 > 內(nèi)嵌式 > @import 導(dǎo)入式。 返回目錄 什么是 Flex 布局? Flex 是 Flexible Box 的縮寫,意為”彈性布局”,用來為盒狀模型提供最大的靈活性。 Flex 布局有哪些便利 如何通過 Flex 實現(xiàn)元素水平垂直居中? HTML CSS 除了 Flex,還能使用其他形式進行水平垂直居中嗎? HTML CSS 除此之外再談?wù)?CSS 水平居中或者垂直居中? 水平居中: 行內(nèi)元素:display: inline-block; text-align: center; 塊級元素:margin: 0 auto; Flex:display: flex; justify-content: center; 垂直居中: 行高 = 元素高:line-height: height Flex:display: flex; align-items: center; 參考文獻: 返回目錄 HTML 屬于結(jié)構(gòu)層,負責描繪出內(nèi)容的結(jié)構(gòu)。 CSS 屬于表示層,負責如何顯示有關(guān)內(nèi)容。 JavaScript 屬于行為層,負責內(nèi)容應(yīng)如何對事件做出反應(yīng)。 返回目錄 《JavaScript 高級程序(第三版)》 《你不知道的 JavaScript》 《JavaScript 忍者秘籍》 《ES6 標準入門》—— 阮一峰 《JavaScript 設(shè)計模式》—— 張容銘 《JavaScript 設(shè)計模式與開發(fā)實踐》—— 曾探 返回目錄 行內(nèi)引入: 內(nèi)部引入: 外部引入: 注意: 不推薦寫行內(nèi)或者在 HTML 中插入 ,因為瀏覽器解析順序緣故,如果解析到死循環(huán)之類的 JS 代碼,會卡住頁面。 建議在 onload 事件之后,即等 HTML、CSS 渲染完畢再執(zhí)行代碼。 返回目錄 關(guān)于 prototype、__proto__、new、call()、apply()、bind()、this 這些的知識點,由于篇幅太長,jsliang 已經(jīng)抽離了出來,并做了簡潔詳細講解,詳見: 面試知識點 - JS 原型與原型鏈 下面放出相關(guān)知識點:
實例的 __proto__ 屬性(原型)等于其構(gòu)造函數(shù)的 prototype 屬性。 Object.proto === Function.prototype Function.prototype.proto === Object.prototype Object.prototype.proto === null 返回目錄 在 JS 中,最容易混淆的就是作用域的情況。 在傳統(tǒng)的后端語言(例如 C 語言)中,一對花括號 {} 就是一個塊級作用域,作用域內(nèi)變量不會相互影響,但是在 JS 中,像 if 條件語句的 {} 就不算一個獨立的作用域: 所以有時候我們就需要變通,通過自執(zhí)行函數(shù)創(chuàng)建臨時作用域: 說到創(chuàng)建臨時作用域,我們就不得不談一下閉包。 那么,什么是閉包呢? 閉包簡單定義:函數(shù) A 里面包含了 函數(shù) B,而 函數(shù) B 里面使用了 函數(shù) A 的變量,那么 函數(shù) B 被稱為閉包。 又或者:閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù) 閉包經(jīng)典問題:現(xiàn)在我們有一段代碼: 請問這段代碼輸出什么? 答案:3 個 3。 那么,我們有什么辦法依次輸出 0 1 2 么? 使用 let: 在這里,每個 let 和代碼塊結(jié)合起來形成塊級作用域,當 setTimeout() 打印時,會尋找最近的塊級作用域中的 i,所以依次打印出 0 1 2。 如果這樣講不明白,我們可以執(zhí)行下下面這段代碼: 此時瀏覽器依次輸出的是: 即代碼還是先執(zhí)行 for 循環(huán),但是當 for 結(jié)束執(zhí)行到了 setTimeout 的時候,它會做個標記,這樣到了 console.log(i) 中,i 就能找到這個塊中最近的變量定義。 使用立即執(zhí)行函數(shù)解決閉包問題 以上,我們就講解完了閉包及解決閉包的方式。 觀點 1:有些資料表示閉包中產(chǎn)生的大量局部變量,會造成內(nèi)存消耗過大,從而造成網(wǎng)頁的性能問題。 返回目錄 什么是深拷貝?什么是淺拷貝? 簡單來說,有兩個對象 A 和 B,B = A,當你修改 A 時,B 的值也跟著發(fā)生了變化,這時候就叫淺拷貝。如果不發(fā)生變化,就叫深拷貝。 為什么會出現(xiàn)深拷貝與淺拷貝? 首先我們需要知道基本數(shù)據(jù)類型(number、string、boolean、null、undefined)與引用數(shù)據(jù)類型(無序?qū)ο螅瑪?shù)據(jù)以及函數(shù))。 然后在基本數(shù)據(jù)類型中,例如:let a = 1; let b = a; a = 2; console.log(b)。當我們嘗試這樣子寫時,b 在棧內(nèi)存中開辟了一個新內(nèi)存,所以 b 的值不會改變,仍是 1. 接著在引用數(shù)據(jù)類型中,例如 let a = [1, 2, 3], b = a; a[0] = 3; console.log(b)。當我們嘗試這樣子寫時,b 會偷懶,引用跟 a 同一塊的內(nèi)存地址,從而 a 的修改會影響 b,使得 b 變成 [3, 1, 3]。 最后,我們可以知道在引用數(shù)據(jù)類型中,會產(chǎn)生淺拷貝的問題。 如何實現(xiàn)深拷貝? 首先我們嘗試使用遞歸去解決深拷貝: 使用 JSON 對象的 parse 和 stringify 注意:采用 JSON 進行的深拷貝,無法拷貝到 undefined、function、symbol 這類數(shù)據(jù),它是有小 bug 的深拷貝。 返回目錄 在前端發(fā)展中,隨著前后端分離,前端社區(qū)的不斷壯大,前端能做的事情越來越多,承受的任務(wù)越來越重,代碼也就越來越長了。就好比 jsliang 個人使用 jQuery 開發(fā)的時候,動不動就上千行代碼,這在一個編輯器上看起來就有點亂了。如果碰上沒有代碼折疊的編輯器,你就更加難受了。 有的小伙伴的編輯器不是 VS Code,也不能進行代碼折疊 所以,面對越來越多的代碼,我們就急需將這些代碼分門別類,將代碼按功能劃分,將同一功能的代碼整合在一起,于是就有了模塊化開發(fā):一個文件就是一個模塊,當我們需要某個文件的時候,我們只需要引用這個模塊即可…… 首先,是 CommonJS 的提出,在 Node.js 以及 Webpack 都支持 CommonJS,它規(guī)定了一個文件就是一個模塊,文件內(nèi)部定義的變量屬于這個模塊,不會對外暴露從而污染全局變量的規(guī)則。在 CommonJS 中,通過 exports 或者 module.exports 進行導(dǎo)出,通過 require 進行 同步加載 所需要依賴的模塊。由于它是同步加載模塊的形式,所以比較通用于服務(wù)器端。 然后,根據(jù) CommonJS 只能同步加載的問題,AMD 根據(jù)瀏覽器的特性,進行了非同步加載模塊的提出。同時,AMD 有個問題,就是在使用 require.js 的時候,必須提前加載所有模塊。 接著,根據(jù) AMD 的問題,CMD 提出來了:通過按需加載的形式,哪里需要就調(diào)用哪里,而不用等到所有的模塊都加載了再解析。 最后,ECMA 國際推出了 ES6 的 modules。在 ES6 中,通過 export 關(guān)鍵字導(dǎo)出模塊,通過 import 關(guān)鍵字引用代碼。當然,由于瀏覽器廠商諸多,ES6 在瀏覽器的尚不支持,目前主流做法是先將 ES6 通過 babel 編譯成 require。 當然,JS 都進行模塊化了,jsliang 想起自己項目中的那一坨 CSS,真心沒有回顧的想法!所以我們還需要知道為了方便管理 CSS,大佬們還是有做事兒的:Less 以及 Sass,這兩者使 CSS 的編寫更有組織性和目的性了。 說起模塊化,我們又可以順帶提及組件化了,一開始為了區(qū)分這兩者,jsliang 也是百度了大量文章,最后成功把自己整蒙了,還是說說感覺可以的解釋: 組件化更關(guān)注的是 UI 部分:彈出框、頭部,內(nèi)容區(qū)、按鈕等,都可以編寫成組件,然后在適用的地方進行引用。而模塊化更側(cè)重于功能或者數(shù)據(jù)的封裝,比如全局的 JSON 配置文件,比如通用的驗證方法,比如規(guī)范時間戳等。 所以,說到這里,我們就可以提到前端工程化:將整個開發(fā)流程就行工程規(guī)劃,從而提高整個團隊的開發(fā)效率。 在前端工程化中,最重要的就是提高整個團隊在 編碼 -> 測試 -> 維護 這三個階段的生產(chǎn)效率。團隊的協(xié)調(diào)至關(guān)重要,將每個任務(wù)細分給各個成員,從而獲取極致的工作效率,是管理者最喜歡看到的。而在上面的模塊化和組件化的應(yīng)用,就屬于前端工程化中的一部分,其目的就是在一些復(fù)雜的項目中,方便團隊進行合作開發(fā),提高生產(chǎn)效率。 參考文獻: 返回目錄 什么是面向過程與面向?qū)ο螅?/p>
面向過程就是做圍墻的時候,由你本身操作,疊第一層的時候:放磚頭,糊水泥,放磚頭,糊水泥;然后第二層的時候,繼續(xù)放磚頭,糊水泥,放磚頭,糊水泥…… 面向?qū)ο缶褪亲鰢鷫Φ臅r候,由他人幫你完成,將做第一層的做法抽取出來,就是放磚頭是第一個動作,糊水泥是第二個動作,然后給這兩個動作加上步數(shù),最后告訴機器人有 n 層,交給機器人幫你工作就行了。 為什么需要面向?qū)ο髮懛ǎ?/p>
更方便 可以復(fù)用,減少代碼冗余度 高內(nèi)聚低耦合 簡單來說,就是增加代碼的可復(fù)用性,減少咱們的工作,使代碼更加流暢。 手寫個面向?qū)ο蟠a? 當然,jsliang 只能寫到這里了,再寫下去就是設(shè)計模式等知識點了。 所以希望小伙伴們還是了解下面向?qū)ο笏枷耄兄谶M一步提升自己。 返回目錄 關(guān)于 防抖與節(jié)流,jsliang 特意將資料結(jié)合起來: 防抖與節(jié)流 重繪與回流 瀏覽器解析 URL DNS 域名解析 TCP 三次握手與四次揮手 瀏覽器渲染頁面 小伙伴們可以前往 《面試知識點 - JS 防抖與節(jié)流》 查看。 返回目錄 ES6 是個大知識點,如果你面試的公司不是 “飽經(jīng)滄桑” 的那種,那么一定會出點 ES6 問題,例如: 說說 let、var、const 區(qū)別 講講 Promise 及其使用 因為 jsliang 感覺自己連 ES6 的門還沒進,所以在這里就不 自作聰明,推薦下阮一峰大佬的教程: 《ECMAScript 6 入門 - 阮一峰》 希望小伙伴們看完能有所收獲,并在工作中大量使用。 返回目錄 在 JavaScript 中,用得較多的之一無疑是數(shù)組操作,這里過一遍數(shù)組的一些用法: map: 遍歷數(shù)組,返回回調(diào)返回值組成的新數(shù)組 forEach: 無法break,可以用try/catch中throw new Error來停止 filter: 過濾 some: 有一項返回true,則整體為true every: 有一項返回false,則整體為false join: 通過指定連接符生成字符串 push / pop: 末尾推入和彈出,改變原數(shù)組, 返回推入/彈出項【有誤】 unshift / shift: 頭部推入和彈出,改變原數(shù)組,返回操作項【有誤】 sort(fn) / reverse: 排序與反轉(zhuǎn),改變原數(shù)組 concat: 連接數(shù)組,不影響原數(shù)組, 淺拷貝 slice(start, end): 返回截斷后的新數(shù)組,不改變原數(shù)組 splice(start, number, value...): 返回刪除元素組成的數(shù)組,value 為插入項,改變原數(shù)組 indexOf / lastIndexOf(value, fromIndex): 查找數(shù)組項,返回對應(yīng)的下標 reduce / reduceRight(fn(prev, cur), defaultPrev): 兩兩執(zhí)行,prev 為上次化簡函數(shù)的return值,cur 為當前值(從第二項開始) 相信小伙伴在工作中耍的已經(jīng)是一套一套的了,或者像 jsliang 一樣只會簡單的使用 push、map 這幾個,感興趣的小伙伴可以 百度/bing/google 找找一些 奇技淫巧,說不定對工作效率有很大提升~ 返回目錄 推薦: 技術(shù)胖 慕課網(wǎng) 返回目錄 在 MVVM 架構(gòu)下,View 和 Model 之間并沒有直接的聯(lián)系,而是通過 ViewModel 進行交互,Model 和 ViewModel 之間的交互時雙向的,因此 View 數(shù)據(jù)會同步到 Model 中,而 Model 數(shù)據(jù)的變化也會立即反應(yīng)到 View 上。 ViewModel 通過雙向數(shù)據(jù)綁定把 View 層和 Model 層連接了起來,而 View 和 Model 之間的同步工作完全是自動的,無需人為干涉,因此開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯,不需要手動操作 DOM,不需要關(guān)注數(shù)據(jù)狀態(tài)的同步問題,復(fù)雜的數(shù)據(jù)狀態(tài)維護完全由 MVVM 來統(tǒng)一管理。 M - Model。Model 代表數(shù)據(jù)模型,也可以在 Model 中定義數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯。 V - View。View 代表 UI 組件,它負責將數(shù)據(jù)模型轉(zhuǎn)化為 UI 展現(xiàn)出來。 VM - ViewModel。ViewModel 監(jiān)聽模型數(shù)據(jù)的改變和控制視圖行為、處理用戶交互,簡單理解就是一個同步 View 和 Model 的對象,連接 Model 和 View。 返回目錄 請大致講下 Vue 的生命周期? 創(chuàng)建前/后:在 beforeCreated 階段,Vue 實例的掛載元素 $el 和數(shù)據(jù)對象 data 以及事件還未初始化。在 created 階段,Vue 實例的數(shù)據(jù)對象 data 以及方法的運算有了,$el 還沒有。 載入前/后:在 beforeMount 階段,render 函數(shù)首次被調(diào)用,Vue 實例的 $el 和 data 都初始化了,但還是掛載在虛擬的 DOM 節(jié)點上。在 mounted 階段,Vue 實例掛載到實際的 DOM 操作完成,一般在該過程進行 Ajax 交互。 更新前/后:在數(shù)據(jù)更新之前調(diào)用,即發(fā)生在虛擬 DOM 重新渲染和打補丁之前,調(diào)用 beforeUpdate。在虛擬 DOM 重新渲染和打補丁之后,會觸發(fā) updated 方法。 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。 轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/7343.html 摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時,攻略中等難度的題目。
Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20
7 月下半旬攻略 45 道題,目前已攻略 100 題。
一 目錄
不折騰的前端,和咸魚有什么區(qū)別... 摘要:每天會折騰一道及以上題目,并將其解題思路記錄成文章,發(fā)布到和微信公眾號上。三匯總返回目錄在月日月日這半個月中,做了匯總了數(shù)組知識點。或者拉到本文最下面,添加的微信等會根據(jù)題解以及留言內(nèi)容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。
LeetCode 匯總 - 2019/08/15
Create by jsliang on 2019-08-12 19:39:34 Recently... 摘要:微信公眾號記錄截圖記錄截圖目前關(guān)于這塊算法與數(shù)據(jù)結(jié)構(gòu)的安排前。已攻略返回目錄目前已攻略篇文章。會根據(jù)題解以及留言內(nèi)容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。
Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25
一 目錄
不... 摘要:獲取的對象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結(jié)果可能有差異而就是。
花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~
別只收藏,點個贊,點個star再走哈~
持續(xù)更新中……,可以關(guān)注下github
項目地址
https:... 摘要:整理收藏一些優(yōu)秀的文章及大佬博客留著慢慢學(xué)習(xí)原文協(xié)作規(guī)范中文技術(shù)文檔協(xié)作規(guī)范阮一峰編程風(fēng)格凹凸實驗室前端代碼規(guī)范風(fēng)格指南這一次,徹底弄懂執(zhí)行機制一次弄懂徹底解決此類面試問題瀏覽器與的事件循環(huán)有何區(qū)別筆試題事件循環(huán)機制異步編程理解的異步
better-learning
整理收藏一些優(yōu)秀的文章及大佬博客留著慢慢學(xué)習(xí)
原文:https://www.ahwgs.cn/youxiuwenzhan... 閱讀 2916·2021-11-17 09:33 閱讀 1635·2021-10-12 10:13 閱讀 2453·2021-09-22 15:48 閱讀 2331·2019-08-29 17:19 閱讀 2592·2019-08-26 11:50 閱讀 1570·2019-08-26 10:37 閱讀 1737·2019-08-23 16:54 閱讀 2924·2019-08-23 14:14
Chrome
Firefox
Safari
IE
Opera
排版引擎
Blink
Gecko
Webkit
Trident
Blink
JS 引擎
V8
SpiderMonkey
Nitro
Chakra
V8
/* 設(shè)置文字不可選取 */
* {
-moz-user-select: none; /* 火狐 瀏覽器 */
-webkit-user-select: none; /* Webkit 瀏覽器 */
-o-user-select: none; /* Opera 瀏覽器 */
-ms-user-select: none; /* IE10 瀏覽器 */
-khtml-user-select: none; /* 早期瀏覽器 */
user-select: none; /* 默認 */
}
3.5 cookies、session、sessionStorage、localStorage
localStorage.getItem("name"); // 獲取 name 的值
localStorage.setItem("name", "jsliang"); // 設(shè)置 name 的值為 jsliang
localStorage.removeItem("name"); // 刪除 name 的值
四 CSS
參考 2:《Cookie、session和localStorage、以及sessionStorage之間的區(qū)別》
box-sizing: border-box
box-sizing: content-box
div {
box-sizing: border-box;
margin: 10px;
width: 100px;
height: 100px;
padding: 10px;
}
div {
box-sizing: content-box;
margin: 10px;
width: 100px;
height: 100px;
padding: 10px;
}
單位
描述
%
百分比
px
像素。計算機屏幕上的一個點為 1px。
em
相對單位。相對于父元素計算,假如某個 p 元素為 font-size: 12px,在它內(nèi)部有個 span 標簽,設(shè)置 font-size: 2em,那么,這時候的 span 字體大小為:12 * 2 = 24px
rem
相對單位。相對于根元素 html 的 font-size,假如 html 為 font-size: 12px,那么,在其當中的 div 設(shè)置為 font-size: 2rem,就是當中的 div 為 24px。
rpx
微信小程序相對單位。1rpx = 屏幕寬度 / 750 px。在 750px 的設(shè)計稿上,1rpx = 1px。
4.5 CSS 選擇器
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Two Column Layouttitle>
<style>
.container {
display: flex;
}
.child-one {
width: 300px;
height: 300px;
background: red;
}
.child-two {
width: 100%;
height: 300px;
background: deepskyblue;
}
style>
head>
<body>
<div class="container">
<div class="child-one">div>
<div class="child-two">div>
div>
body>
html>
4.7 CSS3 新特性
<html>
<head>
<meta charset="utf-8">
<title>CSS3 新特性title>
<style>
div {
width: 100px;
height: 100px;
border-radius: 50px;
background: linear-gradient(red, orange);
box-shadow: 10px 10px 5px #888888;
position: relative;
transition: width 2s;
animation: mymove 5s infinite;
}
div:hover {
width:300px;
transform: rotate(7deg);
}
@keyframes mymove {
from { left: 0px; }
to { left: 200px; }
}
style>
head>
<body>
<div>div>
body>
html>
4.8 BFC
參考 2:《CSS3 漸變(Gradients)》
參考 3:《CSS3 transition 屬性》
參考 4:《CSS3 transform 屬性》
參考 5:《CSS3 animation(動畫) 屬性》
參考 6:《CSS3 box-shadow 屬性》
參考 7:《個人總結(jié)(css3新特性)》
4.9 行內(nèi)元素和塊級元素
等……
<p style="color: #fff; backgournd: deepskyblue;">p>
<head>
<style>
p {
color: #fff;
background: deepskyblue;
}
style>
head>
<head>
<link href="reset.css" type="text/css" rel="stylesheet">
head>
<head>
<style>
@import url(reset.css);
style>
head>
/* 設(shè)置 Flex 模式 */
display: flex;
/* 決定元素是橫排還是豎著排,要不要倒序 */
flex-direction: column;
/* 決定元素換行格式,一行排不下的時候如何排 */
flex-wrap: wrap;
/* flex-flow = flex-direction + flex-wrap */
flex-flow: column wrap;
/* 同一排下對齊方式,空格如何隔開各個元素 */
justify-content: space-between;
/* 同一排下元素如何對齊,頂部對齊、中部對齊還是其他 */
align-items: center;
/* 多行對齊方式 */
align-content: space-between;
.container {
margin: 0 auto;
width: 300px;
height: 200px;
background: deepskyblue;
display: flex;
/* 實現(xiàn)元素水平居中 */
justify-content: center;
/* 實現(xiàn)元素垂直居中 */
align-items: center;
}
.child {
width: 100px;
height: 100px;
background: #fff;
}
.container {
position: relative;
width: 300px;
height: 200px;
background: pink;
margin: 0 auto;
}
.child {
position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
/* 下面兩種方式均可 */
/* margin-top: -50px;
margin-left: -50px; */
transform: translate(-50%, -50%);
background: #fff;
}
五 JavaScript
① 《CSS實現(xiàn)垂直居中的常用方法》
② 《CSS 用 position: absolute 與 transform 來居中塊級元素的問題》
<body>
<input type="button" onclick="alert("行內(nèi)引入")" value="按鈕"/>
<button onclick="alert(123)">點擊我button>
body>
<script>
window.onload = function() {
alert("js 內(nèi)部引入!");
}
script>
<body>
<div>div>
<script type="text/javascript" src="./js/index.js">script>
body>
5.3 原型與原型鏈
var x = 1;
console.log(x); // 1
if(true) {
var x = 2;
console.log(x); // 2
}
console.log(x); // 2
function foo() {
var x = 1;
console.log(x); // 1
if(x) {
(function(x) {
console.log(x); // 1
var x = 2;
console.log(x); // 2
})(x)
}
console.log(x); // 1
}
foo();
function A() {
var a = 1;
function B() {
console.log(a);
}
return B();
}
for(var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
解析:首先,for 循環(huán)是同步代碼,先執(zhí)行三遍 for,i 變成了 3;然后,再執(zhí)行異步代碼 setTimeout,這時候輸出的 i,只能是 3 個 3 了。
for(let i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 1000);
}
for(let i = 0; i < 3; i++) {
console.log("定時器外部:" + i);
setTimeout(function() {
console.log(i);
}, 1000);
}
定時器外部:0
定時器外部:1
定時器外部:2
0
1
2
for(let i = 0; i < 3; i++) {
(function(i){
setTimeout(function() {
console.log(i);
}, 1000);
})(i)
}
5.5 淺拷貝與深拷貝
觀點 2:有些資料表示目前瀏覽器引擎都基于 V8,而 V8 引擎有個 gc 回收機制,不用太過擔心變量不會被回收。
提示:所以,如果你覺得不夠保險,那就在退出函數(shù)之前,將不使用的局部變量全部刪除。
function deepClone(obj) {
let objClone = Array.isArray(obj) ");if(obj && typeof obj === "object") {
for(key in obj) {
if(obj.hasOwnProperty(key)) {
// 判斷 obj 子元素是否為對象,如果是,遞歸復(fù)制
if(obj[key] && typeof obj[key] === "object") {
objClone[key] = deepClone(obj[key]);
} else {
// 如果不是,簡單復(fù)制
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
let a = [1, 2, 3, 4];
let b = deepClone(a);
a[0] = 2;
console.log(a, b);
// Console
// a = [2, 2, 3, 4];
// b = [1, 2, 3, 4];
function deepClone(obj) {
let _obj = JSON.stringify(obj);
let objClone = JSON.parse(_obj);
return objClone
}
let a = [0, 1, [2, 3], 4];
let b = deepClone(a);
a[0] = 1;
a[2][0] = 1;
console.log(a, b);
// Console
// a = [1, 1, [1, 3], 4];
// b = [0, 1, [2, 3], 4];
5.6 模塊化與組件化
5.7 面向?qū)ο笈c面向過程
① 《到底什么是前端工程化、模塊化、組件化》
② 《【前端工程化系列】簡談前端模塊化開發(fā)與開發(fā)規(guī)范》
③ 《個人關(guān)于模塊化的理解》
④ 《組件化開發(fā)和模塊化開發(fā)概念辨析》
⑤ 《JavaScript模塊化 --- Commonjs、AMD、CMD、es6 modules》
⑥ 《淺談什么是前端工程化》
function Person(name, phone) {
this.name = name;
this.phone = phone;
this.eat = function() {
console.log(name + " 吃飯");
}
return this;
}
let p1 = new Person("jsliang", "18818881888");
console.log(p1.name); // jsliang
p1.eat(); // jsliang 吃飯
6.1 MVVM
6.2 生命周期
相關(guān)文章
LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)
LeetCode 攻略 - 2019 年 8 月上半月匯總(109 題攻略)
LeetCode 攻略 - 2019 年 7 月上半月匯總(55 題攻略)
前端最強面經(jīng)匯總
優(yōu)秀文章收藏(慢慢消化)持續(xù)更新~
發(fā)表評論
0條評論
PascalXie
男|高級講師
TA的文章
閱讀更多
說我菜?那好,我用Python制作電腦與手機游戲腳本來贏你
高嚴重代碼注入漏洞影響Yamale Python包 超過200個項目使用
怎么看主機是單線雙線-單線主機和雙線主機有什么差別?
微信小程序 bug 集中營
【ES6系列】變量與塊級作用域
程序員也要懂的一些保險和理財知識
文件下載那點事
JS 總結(jié)之class