當前位置:首頁 » 網頁前端 » call前端
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

call前端

發布時間: 2022-05-19 06:15:34

前端面試會提問到哪些

在面試前端的過程中,有些問題是經常會被提問到的
一、基礎篇
1. 在不使用第三個變數的情況下,如何調換a與b的值?
2. px與em的區別
3. 簡述一下盒模型
4. 頁面導入樣式時,使用link和@import有什麼區別?
5. 簡述一下事件代理
二、HTML常見題目
01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
02、HTML5為什麼只需要寫?
03、行內元素有哪些?塊級元素有哪些?空(void)元素有哪些?
04、頁面導入樣式時,使用link和@import有什麼區別?
05、介紹一下你對瀏覽器內核的理解?
06、常見的瀏覽器內核有哪些?
07、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?
08、如何區分HTML和HTML5?
09、簡述一下你對HTML語義化的理解?
10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
三、CSS類的題目
01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
02、CSS選擇符有哪些?哪些屬性可以繼承?
03、CSS優先順序演算法如何計算?
04、CSS3新增偽類有哪些?
05、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
06、display有哪些值?說明他們的作用。
07、position的值relative和absolute定位原點是?
08、CSS3有哪些新特性?
09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
四、JavaScript類的題目
01、JavaScript中this是如何工作的
02、請解釋原型繼承的原理。
03、什麼是閉包(closure),如何使用它,為什麼要使用它?
04、.call 和.apply的區別是什麼?
05、請指出JavaScript 宿主對象(host objects) 和原生對象(native objects) 的區別?
06、請指出以下代碼的區別:function Person(){}、var person = Person()、var person = new Person()?
07、請解釋變數聲明提升(hoisting)。
08、什麼是 「use strict」; ? 使用它的好處和壞處分別是什麼?
09、什麼是事件循環 (event loop)?
10、請解釋同步 (synchronous) 和非同步 (asynchronous) 函數的區別。
五、開發及性能優化類題目
01、如何規避javascript多人開發函數重名問題?
02、請說出三種減低頁面載入時間的方法.
03、說說你所了解到的Web攻擊技術。
04、說說你說了解的前端性能優化方法?
05、前端開發中,如何優化圖像?圖像格式的區別?
06、瀏覽器是如何渲染頁面的?
07、頁面重構怎麼操作?
08、什麼叫優雅降級和漸進增強?
09、前端需要注意哪些SEO?如何做SEO優化?
10、平時如何管理你的項目?

⑵ 如何系統有效的學習前端

網站開發開發大致分為前端和後端,前端主要負責實現視覺和交互效果,以及與伺服器通信,完成業務邏輯。前端的核心價值在於對用戶體驗的追求,Web前端開發是從網頁製作演變而來的。初學者可以參考以下的教程進行初步的系統學習! 基礎知識1、HTML + CSS 這部分建議在W3school在線教程上學習,邊學邊練,每章後還有小測試。 之後可以模仿一些網站做些頁面。在實踐中積累了一些經驗後,可以系統的讀一兩本書,推薦《Head First HTML 與 CSS 中文版》,這本書講的太細了,我沒能拿出耐心細讀。你可以根據情況斟酌。 2、Javascript 要學的內容實在很多,如果沒有其他編程語言的基礎的話,學起來可能要費些力,還是建議先在 W3school上學習。之後建議馬上看《Javascript語言精粹》,JS是一門很混亂的語言,這本書能夠幫助你區分哪些是語言的精華,哪些是糟粕,對於語言精華,應該深入學習。糟粕部分能看懂別人寫的代碼就行,自己就不用嘗試了。 進階有了以上基礎,就可以進行一般的靜態網頁設計,不過對於復雜的頁面還需要進一步學習。 1、CSS。必看《精通CSS》,看完這本書你應該對:盒子模型,流動,Block,inline,層疊,樣式優先順序,等概念非常了解了。作為練習可以看下《CSS藝門之匠》這本書,它對標題,背景,圓角,導航條,table,表單等主題都有詳細的介紹。 2、Javascript。上面提到內容還不足以讓你勝任JS編程。在有了基礎之後,進一步學習內容包括: a) 框架。 推薦jQuery,簡單易用,在W3school簡單學習js後,直接上手jQuery即可完成一些簡單的項目。學習方法也很簡單,照著產品文檔做幾個頁面就行了,不用面面俱到,以後遇到問題查文檔就行了。框架可以幫你屏蔽瀏覽器的差異性,讓你能更專注與Web開發學習的精髓部分。補充: 可以使用Codecademy學習 Javascript,jQuery,用戶體驗真的很好(感謝 TonyOuyang )。 b) Javascript 語言範式 。這個名字可能並不恰當,只是我找不到可以描述「面向對象」,「函數式」這個兩個概念的概念。Javascript不完全是一個面向對象的語言,它的很多設計理念都有函數編程語言的影子,甚至說如果你不用面向對象,完全可以把它理解成一門函數式編程語言。 Javascript的很多語言特性,都是因為他具有函數式語言的特點才存在的。這部分推薦先學習面向對象的基本理論,對封裝,繼承,多態等概念要理解,維基網路,網路會是你的幫手,另外推薦《Object Oriented Javascript》,應該有中文版。對與函數式編程我了解的也不系統,不好多說,可以自己網路一下。 c) Javascript 語言內部機制。必須弄清如下概念:JS 中變數的作用域,變數傳遞方式,函數的定義環境與執行環境,閉包,函數的四種調用方式(一般函數,對象的方法,apply,call),以及四種調用方式下,『this』指向的是誰。這部分內容你會在《Javascript語言精粹》中詳細了解。另外,你必須理解 json。 d) dom編程,這個Web前端工程師的核心技能之一。必讀《Dom編程藝術》,另外《高性能 Javascript》這本書中關於dom編程的部分講的也很好。 e) Ajax編程,這是另一核心技術。Ajax建議在網上查些資料,了解這個概念的來龍去脈,網路,維基網路上的內容就足夠了。真正編程是很容易的,如今幾乎所有框架都對Ajax有良好的封裝,編程並不復雜。 f) 了解瀏覽器差異性。這部分包括CSS和js兩部分,瀏覽器差異內容很多,建議在實踐中多多積累。另外對於瀏覽器的渲染模式,DOCTYPE等內容應該系統學習。 3、HTML5和CSS3 。HTML5規范已經於2014年10月28日發布了,移動端HTML5和CSS3已經得到了非常廣泛的使用,必知必會呀。 代碼層面有了以上知識,對於大多數小型網站,你應該已經可以寫出能夠工作的代碼了。但要想成為更專業的前端,你還需繼續努力。更高的要求大概還有四方面:1)易維護,2)可測試,3)高性能,4)低流量(移動端)。 1)易維護。對於頁面你該理解『樣式』,『數據』,『行為』三者分離,對應的當然就是CSS,HTML,js。對於js代碼,你最好了解設計模式,重構,MVC等內容。 2)可測性。 3)高性能。必讀《高性能Javascript》 4)低流量。移動端關注比較多。 工程層面前端項目同樣面臨軟體生命周期的各個環節,首先是代碼管理,你必須學會使用Svn和Git。其次是代碼的構建,如今前端代碼構建已經不是簡單的壓縮一下了,需要進行依賴管理、模塊合並、各種編譯,比需要學會使用Grunt、Gulp等前端構建工具。 然後呢? 以上內容只是簡單說了前端學習的順序。 對於前段開發,基本內容就這些了,可以根據自己的興趣愛好選擇性學習以下內容。 1、交互設計。大公司依然有專業人士搞這些,不過不懂交互的前端一定不是好前端。推薦《簡約至上》。 2、後端。 應該說前段工程師必須至少了解一門後端語言,不過如果愛好也可深入學習,入手難度比較低的應該是PHP了。這部分由可分為基於頁面,基於框架兩種。大型項目都是基於框架開發的,建議至少了解一個MVC框架,比如PHP的Ci、Yii、Yaf 等,好還框架的設計思想都大同小異。如今NodeJs在大公司已經得到普遍的使用,推薦大家使用在Node上使用Express框架做一些後端服務的開發。 3、Android和IOS開發。 時至今日,前端的工作領域已經非常廣泛,native的界面開發本質上也是前端開發,個大公司都面臨著Native環境和web環境頁面同時維護的問題,如果能夠在技術上得到統一,將會有巨大的價值。對於學有餘力的同學,應該了解Native開發的基本流程,至少了解到界面構建的技術。 哈哈,上面的教程其實小編也看不大懂,如果你對前端開發有興趣,如果你想成為前端開發大神,不妨可以借鑒下!

⑶ 怎麼學習前端開發求推薦學習路線

基礎知識
1、
HTML + CSS 這部分建議在線教程 上學習,邊學邊練.
之後可以模仿一些網站做些頁面。在實踐中積累了一些經驗後,可以系統的讀一兩本書,推薦《Head First HTML 與 CSS
中文版》,這本書講的太細了,我沒能拿出耐心細讀。你可以根據情況斟酌。
2、Javascript 要學的內容實在很多,如果沒有其他編程語言的基礎的話,學起來可能要費些力,建議看《Javascript語言精粹》,JS是一門很混亂的語言,這本書能夠幫助你區分哪些是語言的精華,哪些是糟
粕,對於語言精華,應該深入學習。糟粕部分能看懂別人寫的代碼就行,自己就不用嘗試了。
有了以上基礎,就可以進行一般的靜態網頁設計,不過對於復雜的頁面還需要進一步學習。
1、CSS。必看《精通CSS》,看完這本書你應該對:盒子模型,流動,Block,inline,層疊,樣式優先順序,等概念非常了解了。作為練習可以看下《CSS藝門之匠》這本書,它對標題,背景,圓角,導航條,table,表單等主題都有詳細的介紹。
2、Javascript。上面提到內容還不足以讓你勝任JS編程。在有了基礎之後,進一步學習內容包括:
a) 框架。
推薦jQuery,簡單易用,上手jQuery即可完成一些簡單的項目。學習方法也很簡單,照著產品文檔做
幾個頁面就行了,不用面面俱到,以後遇到問題查文檔就行了。框架可以幫你屏蔽瀏覽器的差異性,讓你能更專注與Web開發學習的精髓部分。補充: 可以使用
Codecademy 學習 Javascript,jQuery,用戶體驗真的很好(感謝 TonyOuyang )。
b) Javascript 語言範式
。這個名字可能並不恰當,只是我找不到可以描述「面向對象」,「函數式」這個兩個概念的概念。Javascript不完全是一個面向對象的語言,它的很多
設計理念都有函數編程語言的影子,甚至說如果你不用面向對象,完全可以把它理解成一門函數式編程語言。
Javascript的很多語言特性,都是因為他具有函數式語言的特點才存在的。這部分推薦先學習面向對象的基本理論,對封裝,繼承,多態等概念要
理解,維基網路,網路會是你的幫手,另外推薦《Object Oriented
Javascript》,應該有中文版。對與函數式編程我了解的也不系統,不好多說,可以自己網路一下。
c) Javascript 語言內部機制。必須弄清如下概念:JS
中變數的作用域,變數傳遞方式,函數的定義環境與執行環境,閉包,函數的四種調用方式(一般函數,對象的方法,apply,call),以及四種調用方式
下,『this』指向的是誰。這部分內容你會在《Javascript語言精粹》中詳細了解。另外,你必須理解 json。
d) dom編程,這個Web前端工程師的核心技能之一。必讀《Dom編程藝術》,另外《高性能 Javascript》這本書中關於dom編程的部分講的也很好。
e) Ajax編程,這是另一核心技術。Ajax建議在網上查些資料,了解這個概念的來龍去脈,網路,維基網路上的內容就足夠了。真正編程是很容易的,如今幾乎所有框架都對Ajax有良好的封裝,編程並不復雜。
f) 了解瀏覽器差異性。這部分包括CSS和js兩部分,瀏覽器差異內容很多,建議在實踐中多多積累。另外對於瀏覽器的渲染模式,DOCTYPE等內容應該系統學習。
3、HTML5和CSS3 。HTML5規范已經於2014年10月28日發布了,移動端HTML5和CSS3已經得到了非常廣泛的使用,必知必會呀。

再進一階 · 代碼層面:
有了以上知識,對於大多數小型網站,你應該已經可以寫出能夠工作的代碼了。但要想成為更專業的前端,你還需繼續努力。更高的要求大概還有四方面:1)易維護,2)可測試,3)高性能,4)低流量(移動端)。
1)易維護。對於頁面你該理解『樣式』,『數據』,『行為』三者分離,對應的當然就是CSS,HTML,js。對於js代碼,你最好了解設計模式,重構,MVC等內容。
2)可測性。
3)高性能。必讀《高性能Javascript》
4)低流量。移動端關注比較多。
5)對於想要學習前端的同學,尤其是自學的夥伴,自學並非永久的,假如沒有定力的還是找個培訓機構吧。
再進一階 · 工程層面:
前端項目同樣面臨軟體生命周期的各個環節,首先是代碼管理,你必須學會使用Svn和Git。其次是代碼的構建,如今前端代碼構建已經不是簡單的壓縮一下了,需要進行依賴管理、模塊合並、各種編譯,比需要學會使用Grunt、Gulp等前端構建工具。

⑷ 如何系統地學習前端

目前入門前端的人群分類

1、計算機相關專業出身系統走過計算機的理論基礎,比如計算機組成原理、操作系統原理、計算機網路、演算法數據結構、設計模式,至少用過兩門以上編程語言(強類型+弱類型)。

優點:理論、架構方面扎實,有整體計算機思維,內功不錯,外功學起來比較快。

缺點:部分人,前端相關細節技術不扎實,不過花時間能很快搞定。

2、非計算機出身自學(也包括計算機專業沒好好學的)理論基礎薄弱,後來因個人興趣或者職業需求,自學前端開發技能。

優點:自學能力比較強,能夠根據自己的興趣規劃學習內容。

缺點:部分人對前端沒有整體的學習框架 ,屬於東一片,西一片,不成體系,部分人計算機沒有整體思維,建議系統梳理下前端知識體系結構,該補的還是要補起來。

門前端時的一些困境

1、因一些基礎演算法、數據結構理論不扎實導致一些編程思維難於理解。比如 原型鏈,如果清楚 數據結構中鏈表結構,那麼這個東西不難理解,再比如 哈希值,懂得數據結構中哈希表,哈希值也就迎刃而解。

2、計算機體系結構、操作系統理論、網路理論不扎實導致到後期一些東西難於理解。比如有同學從前端學習入手,後來學習node開發 ,在 I/O ,進程、線程、IPC 、線程鎖方面有些概念就比較難於理解,而導致不能很好得使用node 的api 。

3、前端整體體系架構沒有做過深入思考。

導致用會用,但不知道為什麼用,用另外一個有什麼區別。

4、學習環境中無高手。

沒有高手能夠指導自己進入下一個層次。

5、有意識但是沒有行動我的網盤收集了一堆資料或者一堆視頻,然後就沒有然後了 。

如何系統學習前端

網站開發開發大致分為前端和後端,前端主要負責實現視覺和交互效果,以及與伺服器通信,完成業務邏輯。其核心價值在於對用戶體驗的追求。如果你現在是零基礎學員,大致可以按如下思路學習系統學習:

基礎部分

1、HTML + CSS 這部分學習,可以模仿一些網站做些頁面。在實踐中積累了一些經驗後,可以系統的讀一兩本書,推薦《Head First HTML 與 CSS 中文版》,這本書講的太細了,我沒能拿出耐心細讀。你可以根據情況斟酌。

2、Java 要學的內容實在很多,如果沒有其他編程語言的基礎的話,學起來可能要費些力,建議馬上看《Java語言精粹》,JS是一門很混亂的語言,這本書能夠幫助你區分哪些是語言的精華,哪些是糟粕,對於語言精華,應該深入學習。糟粕部分能看懂別人寫的代碼就行,自己就不用嘗試了。

進階部分

有了以上基礎,就可以進行一般的靜態網頁設計,不過對於復雜的頁面還需要進一步學習。

1、CSS。必看《精通CSS》,看完這本書你應該對:盒子模型,流動,Block,inline,層疊,樣式優先順序,等概念非常了解了。作為練習可以看下《CSS藝門之匠》這本書,它對標題,背景,圓角,導航條,table,表單等主題都有詳細的介紹。

2、Java。上面提到內容還不足以讓你勝任JS編程。在有了基礎之後,進一步學習內容包括:

a) 框架。

推薦jQuery,簡單易用,學習方法也很簡單,照著產品文檔做幾個頁面就行了,不用面面俱到,以後遇到問題查文檔就行了。框架可以幫你屏蔽瀏覽器的差異性,讓你能更專注與Web開發學習的精髓部分。補充:可以使用 Codecademy 學習 Java,jQuery,用戶體驗真的很好(感謝 TonyOuyang )。

b) Java 語言範式 。這個名字可能並不恰當,只是我找不到可以描述「面向對象」,「函數式」這個兩個概念的概念。Java不完全是一個面向對象的語言,它的很多設計理念都有函數編程語言的影子,甚至說如果你不用面向對象,完全可以把它理解成一門函數式編程語言。

Java的很多語言特性,都是因為他具有函數式語言的特點才存在的。這部分推薦先學習面向對象的基本理論,對封裝,繼承,多態等概念要理解,維基網路,網路會是你的幫手,另外推薦《Object Oriented Java》,應該有中文版。對與函數式編程我了解的也不系統,不好多說,可以自己網路一下。

c) Java 語言內部機制。必須弄清如下概念:JS 中變數的作用域,變數傳遞方式,函數的定義環境與執行環境,閉包,函數的四種調用方式(一般函數,對象的方法,apply,call),以及四種調用方式下,『this』指向的是誰。這部分內容你會在《Java語言精粹》中詳細了解。另外,你必須理解 json。

d) dom編程,這個Web前端工程師的核心技能之一。必讀《Dom編程藝術》,另外《高性能 Java》這本書中關於dom編程的部分講的也很好。

e) Ajax編程,這是另一核心技術。Ajax建議在網上查些資料,了解這個概念的來龍去脈,網路,維基網路上的內容就足夠了。真正編程是很容易的,如今幾乎所有框架都對Ajax有良好的封裝,編程並不復雜。

f) 了解瀏覽器差異性。這部分包括CSS和js兩部分,瀏覽器差異內容很多,建議在實踐中多多積累。另外對於瀏覽器的渲染模式,DOCTYPE等內容應該系統學習。

3、HTML5和CSS3 。HTML5規范已經於2014年10月28日發布了,移動端HTML5和CSS3已經得到了非常廣泛的使用,必知必會呀。

升級部分

有了以上知識,對於大多數小型網站,你應該已經可以寫出能夠工作的代碼了。但要想成為更專業的前端,你還需繼續努力。更高的要求大概還有四方面:1)易維護,2)可測試,3)高性能,4)低流量(移動端)。

易維護。對於頁面你該理解『樣式』,『數據』,『行為』三者分離,對應的當然就是CSS,HTML,js。對於js代碼,你最好了解設計模式,重構,MVC等內容。

可測性。

高性能。必讀《高性能Java》

低流量。移動端關注比較多。

額外補充部分

前端項目同樣面臨軟體生命周期的各個環節,首先是代碼管理,你必須學會使用Svn和Git。其次是代碼的構建,如今前端代碼構建已經不是簡單的壓縮一下了,需要進行依賴管理、模塊合並、各種編譯,比需要學會使用Grunt、Gulp等前端構建工具。

以上內容只是簡單說了前端學習的順序。對於前端開發,基本內容就這些了,可以根據自己的興趣愛好選擇性學習以下內容。

1、交互設計。大公司依然有專業人士搞這些,不過不懂交互的前端一定不是好前端。推薦《簡約至上》。

2、後端。

應該說前端工程師必須至少了解一門後端語言,不過如果愛好也可深入學習,入手難度比較低的應該是PHP了。這部分由可分為基於頁面,基於框架兩種。大型項目都是基於框架開發的,建議至少了解一個MVC框架,比如PHP的Ci、Yii、Yaf 等,好還框架的設計思想都大同小異。如今NodeJs在大公司已經得到普遍的使用,推薦大家使用在Node上使用Express框架做一些後端服務的開發。

3、Android和IOS開發。

時至今日,前端的工作領域已經非常廣泛,native的界面開發本質上也是前端開發,個大公司都面臨著Native環境和web環境頁面同時維護的問題,如果能夠在技術上得到統一,將會有巨大的價值。

如何才能快速入門前端

1、學習東西,自學是一種途徑,然而在自學的過程中,很多人處於不知道自己不知道的狀態。

2、另一種是跟著高手,開闊視野,達到知道自己不知道的境界,從而有方向,在短時期內進入到一個新的境界,節約時間成本。

⑸ 現在前端好學嗎怎麼學有大佬指點一下嗎

現在很多女生問,學前端女生可以嗎?好學嗎?怎麼學?

簡單來說吧,現在web前端開發是很火的職業方向,很多企業都需要到這樣知的人才,像一線城市有經驗的前端工資會在10K+。

學前端的人近幾年非常多,就業確實比較好,女生學習前端的相對也比較多,簡單易學,適合計算機基礎不是很好的人選擇。

如果你是零基礎,不要自卑,你只要認真學,征服前端沒問題,如果你前端有基礎,不要驕傲,因為沒必要,前邊還有很多的路要走,踏踏實實,努力學習,認真練習,才是王道。

零基礎學習

2.1 基礎知識:


HTML + CSS 這部分建議在W3school 在線教程上學習,邊學邊練,每章後還有小測試。 之後可以模仿一些網站做些頁面。要做項目,記得聯系我。

Javascript 要學的內容實在很多,如果沒有其他編程語言的基礎的話,學起來可能要費些力,還是建議先在 W3school上學習。JS是一門很混亂的語言,這本書能夠幫助你區分哪些是語言的精華,哪些是糟粕,對於語言精華,應該深入學習。糟粕部分能看懂別人寫的代碼就行,自己就不用嘗試了。


2.2 進階:
有了以上基礎,就可以進行一般的靜態網頁設計,不過對於復雜的頁面還需要進一步學習。
CSS。必看《精通CSS》,看完這本書你應該對:盒子模型,流動,Block,inline,層疊,樣式優先順序,等概念非常了解了。作為練習可以看下《CSS藝門之匠》這本書,它對標題,背景,圓角,導航條,table,表單等主題都有詳細的介紹。
Javascript。上面提到內容還不足以讓你勝任JS編程。在有了基礎之後,進一步學習內容包括:


a) 框架。
推薦jQuery,簡單易用,可以去尚學堂上視頻簡單學習js後,直接上手jQuery即可完成一些簡單的項目。學習方法也很簡單,照著產品文檔做幾個頁面就行了,不用面面俱到,以後遇到問題查文檔就行了。框架可以幫你屏蔽瀏覽器的差異性,讓你能更專注於Web開發學習的精髓部分。


b) Javascript 語言內部機制。必須弄清如下概念:JS 中變數的作用域,變數傳遞方式,函數的定義環境與執行環境,閉包,函數的四種調用方式(一般函數,對象的方法,apply,call),以及四種調用方式下,『this』指向的是誰。


c) dom編程,這個Web前端工程師的核心技能之一。


d) Ajax編程,這是另一核心技術。Ajax建議在網上查些資料,了解這個概念的來龍去脈,網路,維基網路上的內容就足夠了。真正編程是很容易的,如今幾乎所有框架都對Ajax有良好的封裝,編程並不復雜。
HTML5和CSS3 。HTML5規范已經於2014年10月28日發布了,移動端HTML5和CSS3已經得到了非常廣泛的使用,必知必會呀。


2.3 推薦書籍:

學習前端知識,必不可少的就是書籍。

《JavaScript高級程序設計(第3版) 紅皮書 》,適合有一定編程經驗的Web應用開發人員閱讀,也可作為高校及社會實用技術培訓相關專業課程的教材。

《JavaScript權威指南(第6版)》 犀牛書,本書不僅適合初學者系統學習,也適合有經驗的 JavaScript 開發者隨手翻閱。

《JavaScript DOM編程藝術 (第2版)》,本書在簡潔明快地講述JavaScript和DOM的基本知識之後,通過幾個實例演示了專業水準的網頁開發技術,透徹闡述了平穩退化等一批至關重要的 JavaScript編程原則和最佳實踐,並全面探討了HTML5以及jQuery等JavaScript庫。

《CSS權威指南(第三版)》,不管你是一個有經驗的Web開發人員還是一個徹底的初學者,《CSS權威指南(第3版)》都是你的CSS學習源泉。

《JavaScript設計模式》,適合JavaScript初學者、前端設計者、JavaScript程序員學習,也可以作為大專院校相關專業師生的學慣用書,以及培訓學校的教材。

《你不知道的JavaScript(上中下卷) 》,本書既適合JavaScript語言初學者了解其精髓,又適合經驗豐富的JavaScript開發人員深入學習。

《Vue.js權威指南》,該書內容全面,講解細致,示例豐富,適用於各層次的開發者。

⑹ 前端開發的基本方法

CSS部分

盒子邊傾斜

clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%);

禁止點擊事件/滑鼠事件「穿透」

div * { pointer-events: none; /*鏈接啊,點擊事件啊,都沒有效果了*/ }

用來控制元素在移動設備上使用滾動回彈效果

.main{
-webkit-overflow-scrolling: touch;
}

可解決在IOS中使用overflow:auto 形成的滾動條,滾動不流暢的情況

文字漸變效果

.text-gradient{ background-image: linear-gradient(135deg, deeppink, deepskyblue);
-webkit-background-clip: text; color: transparent;
}

css三角形

#triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red;

}

實現圓弧

clip-path: ellipse(80%60% at50%40%);

JS部分

JavaScript中檢測數組的方法

(1)、typeof操作符

這種方法對一些常用的類型檢查沒有問題,但對array和null 都判斷為object
(2)、instanceof操作符

這個操作符是檢測對象的原型鏈是否指向構造函數的prototype對象的
(3)、對象的constructor屬性

const arr = []

console.log(arr.constructor === Array) // true

(4)、Object.prototype.toString

constarr=[]console.log(Object.prototype.toString.call(arr)==='[objectArray]')//true

(5)、Array.isArray()

常用的字元串操作

  • 字元串轉化toString()

  • 字元串分隔split()

  • 字元串替換replace()

  • 獲取長度length

  • 查詢子字元串 indexOf

  • 返回指定位置的字元串或字元串編碼 charAt charCodeAt

  • 字元串匹配 match

  • 字元串拼接concat

  • 字元串的切割或提取slice() substring() substr()

  • 字元串大小寫轉化 toLowerCase toUpperCase

  • 字元串去空格 trim() 用來刪除字元串前後的空格

  • 其中第9中三者的區別如下:
    (1)slice(), 參數可以是負數,負數表示從字元串最後一個位置開始切割到對應結束位置
    (2)substring(),參數不可為負數,切割第一個位置到第二個位置的字元串
    (3)substr(), 參數可以是負數,第一個參數是開始位置,第二個參數為切割的長度
    字元串去重

  • const str = '11122223333'const uniqueStr = [...new Set(str)].join('')

  • 常用的數組操作

    1、Array.map()
    此方法是將數組中的每個元素調用一個提供的函數,結果作為一個新的數組返回,並沒有改變原來的數組
    2、Array.forEach()
    此方法是將數組中的每個元素執行傳進提供的函數,沒有返回值,注意和map方法區分
    3、Array.filter()
    此方法是將滿足條件的元素作為一個新數組返回
    4、Array.every()
    此方法將數組所有元素進行判斷返回一個布爾值,如果所有元素都符合判斷條件,則返回true,否則返回false
    5、Array.some()
    此方法將數組所有元素進行判斷返回一個布爾值,如果有一個元素滿足判斷條件,則返回true,所有元素都不滿足則返回false
    6、Array.rece()
    此方法為所有元素調用返回函數
    7、Array.push()
    在數組最後面添加新元素
    8、Array.shift()
    刪除數組第一個元素
    9、Array.pop()
    刪除數組最後一個元素
    10、Array.unshift()
    在數組最前面增加元素
    11、Array.isArray()
    判斷是否為一個數組
    12、Array.concat()
    數組拼接
    13、Array.toString()
    數組轉化為字元串
    14、Array.join()
    數組轉化為字元串,並用第一個參數作為連接符
    15、Array.splice(開始位置,刪除個數,元素)
    其中rece使用方法為:

  • arr.rece(callback,[initialValue])


  • 跳過第一個索引。如果提供initialValue,從索引0開始。

  • callback (執行數組中每個值的函數,包含四個參數)
    1、previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))
    2、currentValue (數組中當前被處理的元素)
    3、index (當前元素在數組中的索引)
    4、array (調用 rece 的數組) initialValue (作為第一次調用 callback 的第一個參數。)
    如果沒有提供initialValue,rece 會從索引1的地方開始執行 callback 方法,

    數組去重:

  • const arr = [1, 2, 3, 1, 2, 3]const uniqueArr = [...new Set(arr)]

  • 常用對象方法

    1、Object.assign()
    用於克隆,兩個參數,將第二個對象分配到第一個中
    2、Object.is()
    用於判斷兩個值是否相同
    //注意,該函數與==運算符不同,不會強制轉換任何類型, 應該更加類似於===,但值得注意的是它會將+0和-0視作不同值
    3、Object.keys()
    用於返回對象可枚舉的屬性和方法的名稱,返回一個屬性或方法名稱的字元串數組。
    4、Object.defineProperty()
    劫持變數的set和get方法,將屬性添加到對象,或修改現有屬性的特性

  • var a = {};Object.defineProperty(a, 'name', { value : 'kong', enumerable : true //該屬性是否可枚舉})

  • 5、Object.defineProperties()
    可添加多個屬性,與Object.defineProperty()對應,
    6、isPrototypeOf

  • function a(){}

  • var b = new a();console.log(a.prototype.isPrototypeOf(b));//true

  • 安卓監聽可視區域變化,讓輸入框移動至可視區域

  • if (/Android/gi.test(navigator.userAgent)) { window.addEventListener('resize', function () { if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') { window.setTimeout(function () { document.activeElement.scrollIntoViewIfNeeded();

  • }, 0);

  • }

  • });

  • };

  • vue中平滑滾動到某個位置

    this.$refs.rule.scrollIntoView({ block: 'start', behavior: 'smooth' })

    向URL追加參數

  • /**

  • * 向URL追加參數

  • * @function stringifyUrlArgs

  • * @param {string} url - URL路徑

  • * @param {object} params - 參數對象

  • * @return {string}

  • const stringifyUrlArgs = (url, params) => {

  • url += (/?/).test(url) ? '&' : '?'

  • url += Object.keys(params).map(key => `${key}=${params[key]}`).join('&') return url

  • }

  • 解析URL參數

  • /**

  • * 解析URL參數

  • * @function parseUrlArgs

  • * @param {string} url - 字元串

  • * @return {object}export const parseUrlArgs = url => { const arr = url.match(/([^?=&]+)(=([^&]*))/g) || [] const args = arr.rece((a, v) => {

  • a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1) return a

  • }, {}) return args

  • }

  • 好用的JavaSrcipt庫與模塊(包)

    日期時間處理庫

    1、monent.js
    2、day.js
    day相對於monent要輕量許多

    高精度數學運算

    number-precision

  • NP.strip(num) // strip a number to nearest right numberNP.plus(num1, num2, num3, ...) // addition, num + num2 + num3, two numbers is required at least.NP.minus(num1, num2, num3, ...) // subtraction, num1 - num2 - num3NP.times(num1, num2, num3, ...) // multiplication, num1 * num2 * num3NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3NP.round(num, ratio) // round a number based on ratio

  • 實用工具庫

    Lodash
    lodash 是一個 JavaScript 實用工具庫,提供一致性,及模塊化、性能和配件等功能。
    Lodash 消除了處理數組的麻煩,從而簡化了 JavaScript、 數字、對象、字元串等

⑺ 前端為什麼用call方法

因為是公用的方法。
js中call是調用一個對象的一個方法,以另一個對象替換當前對象。call方法是Function類原型上的一個公共方法,所以要用這個。

⑻ javascript中apply,call和bind的區別

有點繞的,下面用代碼說明一下這三個函數的區別吧:

varname='global';
varperson={
name:'zero'
};
//輸出姓名、年齡和職業
functionprintInfo(age,job){
console.log(this.name,age,job);
}
//直接調用
printInfo(20,'前端工程師');
//列印:global20前端工程師
//因為默認的上下文是window,所以this.name是全局定義的global,如果我們想列印出來zero的話,就需要改變函數執行的上下文
printInfo.call(person,20,'前端工程師');
printInfo.apply(person,[20,'前端工程師']);
//這兩種方式是一樣的,第一個參數都是傳進去的上下文,this.name取的是person.name,所以列印出來的名字就是zero了,後面的為age和job,只是參數傳遞的方式不一樣,apply比較特殊,把要傳的參數放在數組裡面
//而bind和以上兩種有區別,bind是es5定義的新方法,用來返回一個有自己上下文的函數,用法也比較類似:
printInfo.bind(person)(20,'前端工程師');
//printInfo.bind(person)這一塊是返回的以peron為上下文的函數,後面的(20,'前端工程師')是函數調用

⑼ 如何理解JavaScript中的caller,callee,call,apply 前端設計

在提到上述的概念之前,首先想說說javascript中函數的隱含參數:arguments
Arguments —— 該對象代表正在執行的函數和調用它的函數的參數。
[function.]arguments[n]
參數
function :選項。當前正在執行的 Function 對象的名字。
n :選項。要傳遞給 Function 對象的從0開始的參數值索引。

說明
Arguments是進行函數調用時,除了指定的參數外,還另外創建的一個隱藏對象。Arguments是一個類似數組但不是數組的對象,說它類似數組是因為其具有數組一樣的訪問性質及方式,可以由arguments[n]來訪問對應的單個參數的值,並擁有數組長度屬性length。
還有就是arguments對象存儲的是實際傳遞給函數的參數,而不局限於函數聲明所定義的參數列表,而且不能顯式創建 arguments 對象。
arguments 對象只有函數開始時才可用。
下邊例子詳細說明了這些性質:

//arguments 對象的用法。
function ArgTest(a, b){
var i, s = "The ArgTest function expected ";
var numargs = arguments.length; // 獲取被傳遞參數的數值。
var expargs = ArgTest.length; // 獲取期望參數的數值。
if (expargs < 2)
s += expargs + " argument. ";
else
s += expargs + " arguments. ";
if (numargs < 2)
s += numargs + " was passed.";
else
s += numargs + " were passed.";
s += "\n\n"
for (i =0 ; i < numargs; i++){ // 獲取參數內容。
s += " Arg " + i + " = " + arguments[i] + "\n";
}
return(s); // 返回參數列表。
}
在此添加了一個說明arguments不是數組(Array類)的代碼:
Array.prototype.selfvalue = 1;
alert(new Array().selfvalue);
function testAguments(){
alert(arguments.selfvalue);
}
運行代碼你會發現第一個alert顯示1,這表示數組對象擁有selfvalue屬性,值為1,而當你調用函數testAguments時,你會發現顯示的是「undefined」,說明了不是arguments的屬性,即arguments並不是一個數組對象。

現在開始caller,callee,call,apply:
caller:返回一個對函數的引用,該函數調用了當前函數。
functionName.caller functionName 對象是所執行函數的名稱。

說明
對於函數來說,caller屬性只有在函數執行時才有定義。如果函數是由頂層調用的,那麼 caller 包含的就是 null 。
如果在字元串上下文中使用 caller 屬性,那麼結果和functionName.toString 一樣,也就是說,顯示的是函數的反編譯文本。
下面的例子說明了 caller 屬性的用法:
// caller demo {
function callerDemo() {
if (callerDemo.caller) {
var a= callerDemo.caller.toString();
alert(a);
} else {
alert("this is a top function");
}
}
function handleCaller() {
callerDemo();
}
//輸出結果:
function handleCaller() {
callerDemo();
}

callee —— 返回正被執行的 Function 對象,也就是所指定的 Function 對象的正文。
[function.]arguments.callee
可選項 function 參數是當前正在執行的 Function對象的名稱。

說明
callee屬性的初始值就是正被執行的 Function 對象。
callee屬性是 arguments 對象的一個成員,它表示對函數對象本身的引用,這有利於匿名
函數的遞歸或者保證函數的封裝性,例如下邊示例的遞歸計算1到n的自然數之和。而該屬性
僅當相關函數正在執行時才可用。還有需要注意的是callee擁有length屬性,這個屬性有時候
用於驗證還是比較好的。arguments.length是實參長度,arguments.callee.length是
形參長度,由此可以判斷調用時形參長度是否和實參長度一致。
示例
//callee可以列印其本身
function calleeDemo() {
alert(arguments.callee);
}
//用於驗證參數
function calleeLengthDemo(arg1, arg2) {
if (arguments.length==arguments.callee.length) {
window.alert("驗證形參和實參長度正確!");
return;
} else {
alert("實參長度:" +arguments.length);
alert("形參長度: " +arguments.callee.length);
}
}
//遞歸計算
var sum = function(n){
if (n <= 0)
return 1;
else
return n +arguments.callee(n - 1)
}
比較一般的遞歸函數:
var sum = function(n){
if (1==n) return 1;
elsereturn n + sum (n-1);
調用時:alert(sum(100));
其中函數內部包含了對sum自身的引用,函數名僅僅是一個變數名,在函數內部調用sum即相當於調用一個全局變數,不能很好的體現出是調用自身,這時使用callee會是一個比較好的方法。

apply and call:它們的作用都是將函數綁定到另外一個對象上去運行,兩者僅在定義參數方式有所區別:
apply(thisArg,argArray);
call(thisArg[,arg1,arg2…] ]);
即所有函數內部的this指針都會被賦值為thisArg,這可實現將函數作為另外一個對象的方法運行的目的

apply的說明:
如果 argArray 不是一個有效的數組或者不是 arguments 對象,那麼將導致一個 TypeError。
如果沒有提供 argArray 和 thisArg任何一個參數,那麼 Global 對象將被用作 thisArg,
並且無法被傳遞任何參數。

call的說明:
call方法可將一個函數的對象上下文從初始的上下文改變為由 thisArg指定的新對象。
如果沒有提供 thisArg參數,那麼 Global 對象被用作 thisArg
相關技巧:
應用call和apply還有一個技巧在裡面,就是用call和apply應用另一個函數(類)以後,當前的函數(類)就具備了另一個函數(類)的方法或者是屬性,這也可以稱之為「繼承」。
看下面示例:
// 繼承的演示
function base() {
this.member = " dnnsun_Member";
this.method = function() {
window.alert(this.member);
}
}
function extend() {
base.call(this);
window.alert(member);
window.alert(this.method);
}

上面的例子可以看出,通過call之後,extend可以繼承到base的方法和屬性。
順便提一下,在javascript框架prototype里就使用apply來創建一個定義類的模式,
其實現代碼如下:
var Class = {
create: function() {
returnfunction() {
this.initialize.apply(this, arguments);
}
}
}
解析:從代碼看,該對象僅包含一個方法:Create,其返回一個函數,即類。但這也同時是類的
構造函數,其中調用initialize,而這個方法是在類創建時定義的初始化函數。通過如此途徑,
就可以實現prototype中的類創建模式
示例:
var vehicle=Class.create();
vehicle.prototype.initialize= function(type)
{
this.type=type;
}
vehicle.prototype.showSelf= function()
{
alert("this vehicle is "+ this.type);
}

var moto=new vehicle("Moto");
moto.showSelf();

你自己看看吧,此文章轉自:http://www.cnblogs.com/ghost-draw-sign/articles/1530108.html

⑽ 前端什麼時候用的到繼承了

1、繼承第一種方式:對象冒充2、繼承第二種方式:call()方法方式call方法是Function類中的方法 call方法的第一個參數的值賦值給類(即方法)中出現的this call方法的第二個參數開始依次賦值給類(即方法)所接受的參數3、繼承的第三種方式:apply()方法方式apply方法接受2個參數, A、第一個參數與call方法的第一個參數一樣,即賦值給類(即方法)中出現的this B、第二個參數為數組類型,這個數組中的每個元素依次賦值給類(即方法)所接受的參數4、繼承的第四種方式:原型鏈方式實現原理是使子類原型對象指向父類的實例以實現繼承,即重寫類的原型,弊端是不能直接實現多繼承即子類通過prototype將所有在父類中通過prototype追加的屬性和方法都追加到Child,從而實現了繼承5、繼承的第五種方式:混合方式混合了call方式、原型鏈方式