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

前端面試原型鏈回答

發布時間: 2022-07-31 09:20:09

1. 前端工程師面試時被問到為什麼要做前端時,怎麼回答

我本人是個前端工程師,雖然現在也對php,nodejs等伺服器端的東西有所涉獵,但最喜歡的還是前端這個職位所做的事情,所以要是我面試的話,我會回答:
自己很喜歡做前端,因為前端做出來的東西可以馬上展現出來,可以給我帶來最直接的成就感,不像後端做的大部分都是數據層面的東西,不能讓客戶老闆和自己馬上看到。而且這兩年前端技術發展很快,功能越來越強大,所以做的時間越久,越感覺可挖掘的點很多,很有意思。

2. web前端工程師需要掌握哪些技術

1、開發語言

HTML發展歷史有二十多年,歷經多次版本更新,HTML5和CSS3的出現又是一次革新。有些人認為前端開發要掌握的技能簡單,不就是網頁製作嘛。其實不然,web前端需要掌握的核心語言HTML+CSS+JavaScript,JavaScript作為最難的語言之一,許多編程高手也不敢妄自菲薄自封精通。由於JavaScript與html的差異性,以及靜態分開處理的一些好處。在大公司編寫靜態效果和動態效果往往是分開由不同的人完成的。小公司因為需要壓縮成本,就需要每個人會的越多越好,如果你嚮往項目經理發展,能懂一兩門後端語言,絕對是錦上添花。

2、瀏覽器兼容性

互聯網目前主流瀏覽器有IE6/7/8/9,Firefox,Chrome,Opera,Safari,遨遊,包括國內主流的搜狗,騰訊TT,360,the word等等;從內河上講主要有IE的,遨遊版IE,Safari,Firefox以及opera的,這些都是大家常見的,如果你身邊有老網蟲喜歡收藏瀏覽器,你翻翻他的硬碟,相信十幾款肯定是有的。每種內核對代碼的解析是不完全一樣的,即使同樣內核也可能存在很大差異,如IE和遨遊版IE。不說非主流的瀏覽器,就主流的瀏覽器,要做到完全兼容,也並非易事,需要長時間的積累和測試,需要前端開發工程師對前端端開發的熱愛和激情。

目前移動互聯網的發展趨勢也不容小覷,將慢慢占據互聯網的主要份額。移動互聯網最突出的好處是方便和及時,試想一下,走在某地風景很好,拍下來後自 動分享給各路好友,因此手機上的瀏覽器兼容也看刻不容緩,現在手機上的瀏覽器也是紛繁復雜,主流的UCWEB,safari,IE,3G門戶的,以及 symbian低端機的「殘缺兒童」,包括國外流行手機我們不知道的一些瀏覽器,更糟糕的是這些瀏覽器解析因為手機硬體的不同,每個瀏覽器得到的結果都是 完全不同的。

3.hack技術

由於不同的瀏覽器對CSS的解析認識不一樣,因此會導致生成的頁面效果不一樣,這個時候就需要針對不同的瀏覽器寫不同的CSS,這個過程叫CSS hack。雖然我們寫代碼都要求按照標准,不寫hack代碼,但實際工作中為了兼容主流瀏覽器,hack代碼是免不了的,所以這也應該是每個前端開發人員 必備的技能。

4.業內標准

目前Web前端開發中提到最多的就是W3C標准,這是一系列標準的集合,代表了互聯網發展的方向,也代表了前端開發的一種信仰。寫的代碼都要100%通過標准驗證,為通過標准驗證而感到自豪,會有效推動互聯網的快速發展。

5.開發工具

目前比較流行的是Dreamweaver, 其曾經風靡一時,到現在也沒有退出歷史舞台,證明DW還是有很大優勢的,尤其是針對初學者,其強大的提示功能可以幫助我們很快的熟悉並掌握網頁布局,但現 在更提倡的是純手寫代碼,既體現技能方面的卓越,也可有效避免使用DW等工具產生的冗餘代碼。此外再掌握一些photoshop技能,即使沒有美工,也能 簡單處理一些圖像。

小結,掌握以上技能,可以說你是一個合格的前端開發人員,能夠參與到一個大的項目中,或者自己獨立寫出一個網頁。雖然這看起來和網頁製作設計差不多,從效果上來看,都是製作網頁的,但實際上,技術上所超出的已經是好幾個檔次的東西了。

3. 面試前端怎樣回答比較好——你在昨天/本周學到了什麼

雖然如今的面試五花八門,但面試是有規律的,很多公司面試的問題都是差不多的,求職者應對的要領也是類似的。下面先談談5大面試常見問題,然後再歸納一下面試的應對要領。

面試五大應對方法:

一、請做五分鍾的面試自我介紹

招聘官讓你做自我介紹,其實並不是那麼真的想要從這里了解他們真正想要了解的。叫你談談自己,目的不出二個:一個是讓面談能從較輕松的氣氛導入,另一個是看你會怎麼說,看看你的表達能力。

因此,回答這個問題有個原則:

少談不愉快的經驗,少談個人私事,多談一些你的優點,不論是個性,嗜好,學歷,經歷,參加的社團等,當然你挑出來談的優點和你應征的這份工作有某程度的關連,但你表達時最好過水無痕。

二、你為什麼要應聘這份工作?

這個問題其實是在問,為什麼你認為你有條件做好這份工作。因此回答這個問題,你要朝這個方向思考你不要簡單的回答如「我對這個工作很感興趣」或「貴公司知名度高,我非常願意在這里服務」,因為你這樣回答會讓主考人員認為你還沒清楚了解這個工作的性質,就冒然地說出自己的主張。

因此,回答這個問題,你要採取三個步驟:

1、陳述你認為這個工作性質是怎樣的

2、請教主考人員,你對這個工作性質的描述是否正確,並讓主考人員能補充說明

3、 說明你為什麼能做好這份工作及為什麼你對這份工作有興趣.

面試常見問題三:你的工作目標是什麼? 你五年後的職場目標是 什麼?

這個問題是要了解你的職業生涯規劃及工作抱負,公司的立場當然是希望找一個有計劃,有抱負的員工,但你所談的計劃與抱負最好是公司有能力滿足你的。

因此,回答這個問題,你可從你能貢獻什麼給公司的角度去發揮, 你可談例如:我首先要對這個產業狀況做深入的了解,在這個階段我要深入學習掌握市場狀況的各種方法,例如市場調查,客戶需求調查,客戶滿意度調查,了解了 市場狀況後,我希望有機會發揮我最有興趣的行銷知識,將來我希望有能力成為專業的行銷人員,在行銷的領域,替公司做一些貢獻。

三、你有那些長處?

回答這個問題有三個原則.

第一個原則相信大家都知道,你可從你自己的價值觀,個性上的持點,工作的態度等,選擇幾項和你應征的工作有正面關系的提出說明。

第二個原則是說明時不要僅停留在抽象的名詞上,例如做事仔細,負責,有創意,人際關系良好等,你一定要想辦法舉出一,二件令人印象深刻的實例,只有在你舉的實例打動了主考人員的心,你才能在這個問題上脫穎而出,得到正點.

第三個原則是能當場證明你述說的長處,例如你應徵文案人員,你可拿出曾在報章,雜志發表過的作品,你可拿出一些證明文件,證明你曾當過那些社團活動的負責人等。

四、我們為什麼要僱用你?

回答這個問題可從你的經歷,教育,工作技能,人際關系,人格特性 ... 等方面, 例舉你能對公司產生那些貢獻,最重要的是你做這個工作時,你能替公司解決這個職務上可能發生的那些問題,例如我的個性很仔細,這個工作如果一時的粗心會造 成那些不利的影響,僱用我的話,這些可能的問題將不會產生,你用這種方式回答,一方面能讓主考人員了解你是多麼熟習這份工作,同時也告訴他們你能防止或解 決那些工作中可能發生的問題。

若你沒有工作經驗,你必須用很誠懇的態度告訴主考人員,你評估過你的知識及能力,確信自己能把這份工作做好,加上你是一位做任何事情都能在極短的時間學好並做好的人。

五、你的期望薪水是多少?

應對這個問題,要看你應征的是什麼樣的公司,我們可簡單地分為二類,一類是知名度高,有制度的公司,例如股票上市公司,另一類是較小型的公司.

第一類的公司,由於公司員工多薪資水準有一定的制度及合於市場的水準應征的是這一類的公司的一般性職務,你只要回答依公司制度即可,因為在這種狀況下,薪資的彈性不大,若你要求的薪水過高或過低,對你而言,都是負面的。

至於你應征的公司是第二類,員工人數較少的小型公司,薪資上的彈性會較大,你最好技巧地詢問出他們要支付的薪水,當然這不一定是一個絕對數字,它可以是一個范圍。更多有關這方面的知識你可以到約聘網www.51yuepin.com查詢。
如何了解薪資范圍呢? 你可主動地詢問,例如這種工作內容,如果貴公司找到適合的人選,你們提供的薪水范圍是多少?你不需要太迴避薪水的問題,記住你只要本著諴懇,有禮貌的態度詢問即可,若對方在薪水上老是不幹脆,這份工作不要也罷。因為就算應聘成功了,往後的日子恐怕也不好過。

4. 前端面試的提問,該怎麼回答

臉上膠原蛋白

5. 如何在面試中回答「說說什麼是原型和原型鏈」

每個對象都會在其內部初始化一個屬性,就是prototype(原型)。通俗的說,原型就是一個模板,更准確的說是一個對象模板。

當我們訪問一個對象的屬性時,如果這個對象內部不存在這個屬性,那麼他就會去prototype里找這個屬性,這個prototype又會有自己的prototype,於是就這樣一直找下去,也就是我們平時所說的原型鏈的概念。

對於函數而言,只有函數才有 prototype 屬性,Person.prototype 是一個對象,並且有兩個屬性, 一個是 constructor 指向其構造函數 Person, 一個是 __proto__ 屬性:是一個對象,指向上一層的原型。

原型鏈的盡頭是Object.prototype。所有對象均從Object.prototype繼承屬性。

Function.prototype和Function.__proto__為同一對象。Object/Array/String 等等構造函數本質上和 Function 一樣,均繼承於Function.prototype。

Function.prototype直接繼承Object.prototype。

這里的 Object 和 Function 有點雞和蛋的問題,總結:先有Object.prototype(原型鏈頂端),Function.prototype繼承Object.prototype而產生,最後,Function 和 Object 和其它構造函數繼承Function.prototype而產生。

6. web前端面試怎麼介紹

  • 你的筆試題, 根據其做延伸.

  • 你的簡歷, 技術棧、工作外學習情況、項目經驗. 第一頁很重要, 最好都能掌握, 有亮點更好.

  • 面試官額外的延展的知識點, 隨機問,看你運氣和積累(一般會提及到 ES6、解決實際問題的方法、數據結構與演算法都有可能).

  • 應對

  • 刷題, 各種基礎題會幫你快速回憶起來, 比你看書快, 如果基礎不好的話, 看書好好學學吧.

  • 簡歷上自己寫的東西, 要能說出來.

  • 積累, 每次面試不成功就回來填坑吧, 還是有掌握不到位的. 我覺得能堅持下來的話, 找工作只是時間問題.

  • 據公司業務不同, 著重點不一樣, 公司能把你簡歷挑出來, 就說明有用人單位感興趣的部分.

  • 可能你寫的是熟練使用 Vue, 公司也是這個技術棧.

  • 可能你知識寫的全面, 公司想面面你實際掌握怎麼樣.

  • 可能你項目寫的貼合用人單位需要, 比如都是做後台管理的.

  • 框架問題: (Vue 舉例, 3框架實質問題差不多, 具體有些差異)

  • 封裝過哪些組件?有自己寫過 UI 組件嗎?

  • 什麼是 MVVM , 和 MVC 是什麼區別, 原理是什麼?

  • 父子組件怎麼通信的?

  • 兄弟組件怎麼通信的?

  • 生命周期有哪些, 怎麼用?

  • Vue 全家桶都用過哪些?具體怎麼用?

  • HTML5 + CSS3

  • 盒子模型

  • 如何給未知寬高的圖片垂直居中對齊? 有幾種方法?

  • 移動端的 rem 布局.

  • 前端可以做哪些優化, 或問你 SEO, 基本都問.

  • 清除浮動方式和原理, 基本都問. 幾種方式? 原理? 為什麼要用偽元素? 具體代碼怎麼寫,為什麼這么寫?

  • 清除浮動就會涉及到 BFC 的問題.

  • 給你實際頁面例子, 讓你口述布局或手寫實現細節, 可以使用幾種方法, 怎麼寫兼容性好, 拓展性好.

  • 具體 API 哪個 CSS 版本的?

  • CSS3 新增了哪些 API?

  • 可能問你哪些 API 是 CSS 哪個版本的? 兼容性怎麼樣.

  • CSS hack 是什麼? 包含什麼? 怎麼處理兼容性問題?

  • HTML5 新增了哪些 API? 哪些比較常用? 用來做什麼? 實際怎麼用?

  • cookie, session, localStrorage, sessionStorage 區別, 具體怎麼用代碼去操作?

  • JavaScript

  • 變數聲明提升的問題.

  • 閉包的原理, 閉包的各種題, 基本都問.

  • DOM2 事件流, 冒泡和捕獲問題?

  • this 指向問題, 一般都是在筆試題里, 拿著問你, 問的比較多.

  • call 和 apply 區別? 有的還會加問 bind?

  • 面向對象編程中的繼承問題, 原型鏈問題在筆試題里比較常見.

  • jQuery API , 各種操作 DOM 用法, 還有一些新的 API, 這種在不用 3 大框架的公司會問的很詳細.

  • 可能有些考演算法結構的, 可以了解一下, 一般前端掌握的很少.

  • Ajax 基本都問, 問的細節可能不同, 比如 get 和 post 有什麼區別?

  • 數組的方法 - es6 以下基本都能熟練使用, 應該會加分不少

  • 字元串的方法 - 拼接, 截取, 帶些正則

  • 數組去重問的挺多的(解法很多, ES6 有很多簡短寫法)

  • ES6 的 Promise , 很多都會問. 如果公司用框架或者你寫了, 還會問你 Class.

  • var, let, const區別, 問的多.

  • 棧和隊列結構, 有的會問.

  • 跨域問題: 同源策略, 解決方案, 解決原理(比如 jsonp 的原理), 這里都是高發區.

7. 面試問原型鏈如何回答

1、參加面試的時候要穿深色的衣服,穿淺顏色的衣服會顯得太有活力,不能突出成熟和可靠的氣質;
2、身上的氣味也很重要,散發出不雅的味道,會給形象降低分數;
3、頭發一定要整潔,不可以蓬頭垢面;
4、面試前一定要整理好內襯,不能犯系錯紐扣這種小錯誤,會留下不細心,不踏實的印象;
5、簡歷的製作要朴實,不能因為想提高面試率而製作太豪華的簡歷;
6、進去面試場所不能忘記敲門,門如果開著的話也要象徵性的敲幾下;
7、面試落座的時候桌椅不要發出響聲。
編輯於 2019-11-22
查看全部2個回答
如何克服開會發言緊張心理_告訴你一個簡單解決的方法_
值得一看的口才相關信息推薦
如何克服開會發言緊張心理,心跳加速,大腦空白,和上級交流緊張,5招讓你擺脫開會痛苦
北京企飛科技有限公司廣告
國考銀保監面試_面試技巧_面試流程_面試題型_時代顧邦
值得一看的銀保監相關信息推薦
【時代顧邦】提供國考銀保監面試,面試輔導,面試技巧,面試題型分析,面試場景模擬,業界名師一對一,面授講解,模擬央行面試流程,反復練習,誤區規避,協議報班,不過退費!
西安時代顧邦教育科技有限公司廣告
— 你看完啦,以下內容更有趣 —
實習生簡歷怎麼寫
實習生簡歷怎麼寫?實習生簡歷大概就分為以下這幾部分:第一部個人介紹,其實個人介紹是你自己對自己簡歷的一個總結性概括,一方面可以更加節約HR看你簡歷的時間,另一方面也是對你自己的總結概括能力的一個體現。第二部分是你的教育經歷,因為是應屆畢業生或者是還沒畢業的學生,所以教育經驗就顯得舉足輕重了,教育經驗一定要把自己優秀的一面體現出來,

8. 前端開發面試回答,你怎麼回答

我面試過很多 前端程序員,非常了解面試者和面試官的心理,我可以很負責的告訴你:

就算面試你的人說你只能拿8K,但是你完全可以通過各種方法去拿到10K以上的薪資!

面試的時候面試官都是什麼樣的心理?

大多數公司的領導都會通過給你構造一個宏偉的藍圖以及對你進行技術打擊,來讓你降低標准,因為任何一家公司都希望花最少的錢請到最NB的技術人才,其實雙方就是一個周旋的過程,看誰的情商更高一些,但往往都是面試者被面試官拿下的情況比較多。

我給面試經驗不多的 前端程序員4個建議:

1、說工資時千萬不要說自己的理想工資,在這個之上虛高一點!

假設你預期的薪資是10k,你很實在的說要10k,那麼按照常理來說,你的工資標準是一定會被往下進行打壓的。

你可以先說自己以前的工作的薪資在11K左右,現在換份工作想要13K的薪資,這個時候面試官就會想,這個人以前的工資是11k,現在給他10k他肯定是不會來的,但他還是會跟你進行壓價,但是壓價肯定都是在10k以上的,所以你和面試官談判的時候,如果他認可你,那麼你的薪資應該就會在10k-13k之間,無論最終是10k還是11k或者12k,我們的目標都已經達到了。你可以進行一番思考,最終同意對方的開價。

但是你不要跟輕易的答應,一定要拿捏一下,讓對方覺得你也在考慮,最終你選擇了他們公司,要表達出對他們公司的願景,自己中意的是職業發展,喜歡的是公司氛圍等等因素,這樣對方才會認為你是看重公司的發展,而不是因為工資。關於這點我只能說,華夏民族的人和人交流的關系是世界最微妙的,這些套路大家心知肚明,但是你用和不用還真的是兩種效果。

2、設置一個自己的心理價位

如果對方說的薪資低於這個心理價位,我們一定要果斷拒絕,保持我們的原則性,不要因為對方說了而讓你降低了自己的心理價位,這樣也會讓面試官覺得你非常的有原則,非常自信,人們都尊重這樣的人,如果你一味的做舔狗,下場會非常悲慘。

根據我十年多的IT從業經驗來看,即使是做同樣的工作,也會存在著很多工資高低差距較多的情況,所以不要掉在一棵樹上,現在社會工作機會這么多,只要有實實在在的技術,工作是很容易找的,一定要多去嘗試。

3、凸顯自己的價值,讓對方覺得你是個人才

如果之前兩點沒有達到預期成效,但你又非常看好這家公司,就該盡力爭取了;

用自己之前做成的事情說事情,最好是用數據給面試官說明,表達清楚自己為什麼要這樣的薪資,讓對方感覺到你值這么多錢,如果對方公司現在比較缺人,而且你要的薪資沒有特別離譜,還有有希望拿下的。

4、公司一般都有獎金福利可以彌補工資的欠缺

大多數人都想不到那麼遠,都是盯著眼前的薪資,但其實很多公司都有項目提成、獎金,這也是錢啊,有一些不錯的公司都是14薪往上,所以在跟公司談的時候,一定要去問他們是否有獎金、年終獎之類的福利。


除了被壓榨薪資的問題,還有以下幾點是必須要注意的!

1、項目作品

面試的時候,除了基礎的知識技術外,一個項目經驗是非常重要的,面試官會著重去問你的項目過程,所以准備好一份好的項目實戰,不只是證明你對這次面試的重視,更是證明你有能力勝任這份工作的利器。

2、去背那些常問的面試題

面試題對於以下幾個問題都會問:

·自我介紹(建議30s-60s)

·了解我們公司的基本情況嗎?

·你上家公司離職的原因是什麼?

·你自己的職業規劃是什麼?

·自我評價一下自己的優缺點?

以上問題都是大部分公司都會問到的,其實面試官只是想多了解你一些,而這些回答在網上有非常標準的答案,如果你覺得自己回答不好,你可以去網上找一些標準的答案背一下,還是非常有必要的,做到萬無一失。

3、假設面試官沒有跟你說薪資的問題,那麼我們也不要主動去提及,這樣會顯得你非常的著急,最好是先拿到offer之後再去談薪資,這樣對於我們來說是非常有利的,經驗之談。

4、面試的時候不要對方問一句你就答一句,你一定要明白面試的本質是什麼,在短時間內展示你的才華,方方面面的才能,給對方留下一個好的印象。

5、面試的過程中,是你展現的時候,所以80%的時間都應該你來主導,你來展示自己的才能,一定要非常著重的表現自己。

6、在回答面試官時,換位思考幾秒鍾:

·他為什麼要問這個問題?

·他想知道什麼答案?

·他想通過這個答案判斷出什麼?

所謂知己知彼才能百戰不殆,你一定要換位思考對方問的問題,想要知道什麼,從你的回答中他是否可以得到他想要的答案,所以面試是一門非常深的學問,人與人之間心理的博弈。

總結:

以上全部都是面試技巧方面,這屬於細活,而真正掌握技術才是根本,如果你沒有掌握良好的技術,技巧也幫助不了你找到一份工作,當你的技術達標,在加上好的面試技巧,就是如虎添翼,工作隨便你選擇。

常在這里回答問題,熱愛技術,喜歡幫別人解答行業技術問題和行業知識。

如果大家對於學習前端有任何不懂的可以隨時來問我,我給你提供一個非常不錯的前端交流學習qun:前面是二九六,中間是二一二,後面是五六二。有問題就在裡面問我,這樣你可以少走很多彎路,做起來有效率,記得多跟有經驗的人交流,別閉門造車。如果沒有比較好的教程,也可以管我要。

9. 面試問js原型怎麼理解

一、基於原型鏈的繼承

1.繼承屬性

JavaScript 對象是動態的屬性「包」(指其自己的屬性)。JavaScript 對象有一個指向一個原型對象的鏈。當試圖訪問一個對象的屬性時,它不僅僅在該對象上搜尋,還會搜尋該對象的原型,以及該對象的原型的原型,依此層層向上搜索,直到找到一個名字匹配的屬性或到達原型鏈的末尾。下面的代碼將演示,當訪問一個對象的屬性時會發生的行為:

[javascript]view plain

  • //假定有一個對象o,其自身的屬性(ownproperties)有a和b:

  • //{a:1,b:2}

  • //o的原型o.[[Prototype]]有屬性b和c:

  • //{b:3,c:4}

  • //最後,o.[[Prototype]].[[Prototype]]是null.

  • //這就是原型鏈的末尾,即null,

  • //根據定義,null沒有[[Prototype]].

  • //綜上,整個原型鏈如下:

  • //{a:1,b:2}--->{b:3,c:4}--->null

  • console.log(o.a);//1

  • //a是o的自身屬性嗎?是的,該屬性的值為1

  • console.log(o.b);//2

  • //b是o的自身屬性嗎?是的,該屬性的值為2

  • //o.[[Prototype]]上還有一個'b'屬性,但是它不會被訪問到.這種情況稱為"屬性遮蔽(propertyshadowing)".

  • console.log(o.c);//4

  • //c是o的自身屬性嗎?不是,那看看o.[[Prototype]]上有沒有.

  • //c是o.[[Prototype]]的自身屬性嗎?是的,該屬性的值為4

  • console.log(o.d);//undefined

  • //d是o的自身屬性嗎?不是,那看看o.[[Prototype]]上有沒有.

  • //d是o.[[Prototype]]的自身屬性嗎?不是,那看看o.[[Prototype]].[[Prototype]]上有沒有.

  • //o.[[Prototype]].[[Prototype]]為null,停止搜索,

  • //沒有d屬性,返回undefined

  • 創建一個對象它自己的屬性的方法就是設置這個對象的屬性。唯一例外的獲取和設置的行為規則就是當有一個getter或者一個setter被設置成繼承的屬性的時候。

    2.繼承方法

    JavaScript 並沒有其他基於類的語言所定義的「方法」。在 JavaScript 里,任何函數都可以添加到對象上作為對象的屬性。函數的繼承與其他的屬性繼承沒有差別,包括上面的「屬性遮蔽」(這種情況相當於其他語言的方法重寫)。

    當繼承的函數被調用時,this指向的是當前繼承的對象,而不是繼承的函數所在的原型對象。

    [javascript]view plain

  • varo={

  • a:2,

  • m:function(){

  • returnthis.a+1;

  • }

  • };

  • console.log(o.m());//3

  • //當調用o.m時,'this'指向了o.

  • varp=Object.create(o);

  • //p是一個對象,p.[[Prototype]]是o.

  • p.a=12;//創建p的自身屬性a.

  • console.log(p.m());//13

  • //調用p.m時,'this'指向p.

  • //又因為p繼承o的m函數

  • //此時的'this.a'即p.a,即p的自身屬性'a'


  • 二、使用不同的方法來創建對象和生成原型鏈
  • EDIT

    1.使用普通語法創建對象

    [javascript]view plain

  • varo={a:1};

  • //o這個對象繼承了Object.prototype上面的所有屬性

  • //所以可以這樣使用o.hasOwnProperty('a').

  • //hasOwnProperty是Object.prototype的自身屬性。

  • //Object.prototype的原型為null。

  • //原型鏈如下:

  • //o--->Object.prototype--->null

  • vara=["yo","whap","?"];

  • //數組都繼承於Array.prototype

  • //(indexOf,forEach等方法都是從它繼承而來).

  • //原型鏈如下:

  • //a--->Array.prototype--->Object.prototype--->null

  • functionf(){

  • return2;

  • }

  • //函數都繼承於Function.prototype

  • //(call,bind等方法都是從它繼承而來):

  • //f--->Function.prototype--->Object.prototype--->null

  • 2.使用構造器創建對象

    在 JavaScript 中,構造器其實就是一個普通的函數。當使用new 操作符來作用這個函數時,它就可以被稱為構造方法(構造函數)。

    [javascript]view plain

  • functionGraph(){

  • this.vertexes=[];

  • this.edges=[];

  • }

  • Graph.prototype={

  • addVertex:function(v){

  • this.vertexes.push(v);

  • }

  • };

  • varg=newGraph();

  • //g是生成的對象,他的自身屬性有'vertices'和'edges'.

  • //在g被實例化時,g.[[Prototype]]指向了Graph.prototype.


  • 3.使用 Object.create 創建對象

    ECMAScript 5 中引入了一個新方法:Object.create()。可以調用這個方法來創建一個新對象。新對象的原型就是調用create方法時傳入的第一個參數:

    [javascript]view plain

  • vara={a:1};

  • //a--->Object.prototype--->null

  • varb=Object.create(a);

  • //b--->a--->Object.prototype--->null

  • console.log(b.a);//1(繼承而來)

  • varc=Object.create(b);

  • //c--->b--->a--->Object.prototype--->null

  • vard=Object.create(null);

  • //d--->null

  • console.log(d.hasOwnProperty);//undefined,因為d沒有繼承Object.prototype


  • 4.使用class關鍵字

    ECMAScript6 引入了一套新的關鍵字用來實現class。使用基於類語言的開發人員會對這些結構感到熟悉,但它們是不一樣的。 JavaScript 仍然是基於原型的。這些新的關鍵字包括class,constructor,static,extends, 和super.

    [javascript]view plain

  • "usestrict";

  • classPolygon{

  • constructor(height,width){

  • this.height=height;

  • this.width=width;

  • }

  • }

  • classSquareextendsPolygon{

  • constructor(sideLength){

  • super(sideLength,sideLength);

  • }

  • getarea(){

  • returnthis.height*this.width;

  • }

  • setsideLength(newLength){

  • this.height=newLength;

  • this.width=newLength;

  • }

  • }

  • varsquare=newSquare(2);

  • 5.性能

    在原型鏈上查找屬性比較耗時,對性能有副作用,這在性能要求苛刻的情況下很重要。另外,試圖訪問不存在的屬性時會遍歷整個原型鏈。遍歷對象的屬性時,原型鏈上的每個可枚舉屬性都會被枚舉出來。

    檢測對象的屬性是定義在自身上還是在原型鏈上,有必要使用hasOwnProperty方法,所有繼承自Object.proptotype 的對象都包含這個方法。

    hasOwnProperty是 JavaScript 中唯一一個只涉及對象自身屬性而不會遍歷原型鏈的方法。

    注意:僅僅通過判斷值是否為undefined還不足以檢測一個屬性是否存在,一個屬性可能存在而其值恰好為undefined。

    6.不好的實踐:擴展原生對象的原型

    一個經常被用到的錯誤實踐是去擴展Object.prototype或者其他內置對象的原型。該技術被稱為 monkey patching,它破壞了原型鏈的密封性。盡管,一些流行的框架(如 Prototype.js)在使用該技術,但是並沒有足夠好的理由要用其他非標準的方法將內置的類型系統搞亂。我們去擴展內置對象原型的唯一理由是引入新的 JavaScript 引擎的某些新特性,比如Array.forEach。

10. Web前端崗位面試題有哪些

前端面試題匯總,基本上會有四大類問題,具體如下:
一、HTML

1、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?

2、HTML5 為什麼只需要寫 <!DOCTYPE HTML>?
3、行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
4、頁面導入樣式時,使用link和@import有什麼區別?
5、介紹一下你對瀏覽器內核的理解?
6、常見的瀏覽器內核有哪些?
7、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?
8、簡述一下你對HTML語義化的理解?
9、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
10、瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?
11、請描述一下 cookies,sessionStorage 和 localStorage 的區別?
12、iframe有那些缺點?
13、Label的作用是什麼?是怎麼用的?(加 for 或 包裹)
14、HTML5的form如何關閉自動完成功能?
15、如何實現瀏覽器內多個標簽頁之間的通信? (阿里)
16、webSocket如何兼容低瀏覽器?(阿里)
17、頁面可見性(Page Visibility)API 可以有哪些用途?
18、如何在頁面上實現一個圓形的可點擊區域?
19、實現不使用 border 畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、網頁驗證碼是幹嘛的,是為了解決什麼安全問題?
21、tite與h1的區別、b與strong的區別、i與em的區別?

二、css

1、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?

2、CSS選擇符有哪些?哪些屬性可以繼承?
3、CSS優先順序演算法如何計算?
4、CSS3新增偽類有那些?
5、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
6、display有哪些值?說明他們的作用。
7、position的值relative和absolute定位原點是?
8、CSS3有哪些新特性?
9、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?

11、一個滿屏 品 字布局 如何設計?

三、常見兼容性問題?


  1. 1、li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?
    2、經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧 ?
    3、為什麼要初始化CSS樣式。
    4、absolute的containing block計算方式跟正常流有什麼不同?
    5、CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?
    6、position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?
    7、對BFC規范(塊級格式化上下文:block formatting context)的理解?
    8、CSS權重優先順序是如何計算的?
    9、請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式
    10、移動端的布局用過媒體查詢嗎?
    11、使用 CSS 預處理器嗎?喜歡那個?
    12、CSS優化、提高性能的方法有哪些?
    13、瀏覽器是怎樣解析CSS選擇器的?
    14、在網頁中的應該使用奇數還是偶數的字體?為什麼呢?
    15、margin和padding分別適合什麼場景使用?
    16、抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]
    17、元素豎向的百分比設定是相對於容器的高度嗎?
    18、全屏滾動的原理是什麼?用到了CSS的那些屬性?
    19、什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?
    20、視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)
    21、::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。
    22、如何修改chrome記住密碼後自動填充表單的黃色背景 ?
    23、你對line-height是如何理解的?
    24、設置元素浮動後,該元素的display值是多少?(自動變成display:block)
    25、怎麼讓Chrome支持小於12px 的文字?
    26、讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing: antialiased;)
    27、font-style屬性可以讓它賦值為「oblique」 oblique是什麼意思?
    28、position:fixed;在android下無效怎麼處理?
    29、如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)
    30、display:inline-block 什麼時候會顯示間隙?(攜程)
    31、overflow: scroll時不能平滑滾動的問題怎麼處理?
    32、有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。
    33、png、jpg、gif 這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?
    34、什麼是Cookie 隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)
    35、style標簽寫在body後與body前有什麼區別?

    四、JavaScript

    1、介紹JavaScript的基本數據類型。
    2、說說寫JavaScript的基本規范?
    3、JavaScript原型,原型鏈 ? 有什麼特點?
    4、JavaScript有幾種類型的值?(堆:原始數據類型和 棧:引用數據類型),你能畫一下他們的內存圖嗎?
    5、Javascript如何實現繼承?
    6、Javascript創建對象的幾種方式?
    7、Javascript作用鏈域?
    8、談談This對象的理解。
    9、eval是做什麼的?
    10、什麼是window對象? 什麼是document對象?
    11、null,undefined的區別?
    12、寫一個通用的事件偵聽器函數(機試題)。
    13、[「1」, 「2」, 「3」].map(parseInt) 答案是多少?
    14、關於事件,IE與火狐的事件機制有什麼區別? 如何阻止冒泡?
    15、什麼是閉包(closure),為什麼要用它?
    16、javascript 代碼中的」use strict」;是什麼意思 ? 使用它區別是什麼?
    17、如何判斷一個對象是否屬於某個類?
    18、new操作符具體幹了什麼呢?
    19、用原生JavaScript的實現過什麼功能嗎?
    20、Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
    21、對JSON的了解?
    22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解釋一下這段代碼的意思嗎?
    23、js延遲載入的方式有哪些?
    24、Ajax 是什麼? 如何創建一個Ajax?
    25、同步和非同步的區別?
    26、如何解決跨域問題?
    27、頁面編碼和被請求的資源編碼如果不一致如何處理?
    28、模塊化開發怎麼做?
    29、AMD(Moles/Asynchronous-Definition)、CMD(Common Mole

    Definition)規范區別?
    30、requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何 緩存的?)
    31、讓你自己設計實現一個requireJS,你會怎麼做?
    32、談一談你對ECMAScript6的了解?
    33、ECMAScript6 怎麼寫class么,為什麼會出現class這種東西?
    34、非同步載入的方式有哪些?
    35、documen.write和 innerHTML的區別?
    36、DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?
    37、.call() 和 .apply() 的含義和區別?
    38、數組和對象有哪些原生方法,列舉一下?
    39、JS 怎麼實現一個類。怎麼實例化這個類
    40、JavaScript中的作用域與變數聲明提升?
    41、如何編寫高性能的Javascript?
    42、那些操作會造成內存泄漏?
    43、JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?
    44、jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?
    45、jquery中如何將數組轉化為json字元串,然後再轉化回來?
    46、jQuery 的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?
    47、jquery.extend 與 jquery.fn.extend的區別?
    48、jQuery 的隊列是如何實現的?隊列可以用在哪些地方?
    49、談一下Jquery中的bind(),live(),delegate(),on()的區別?
    50、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
    51、是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?
    52、jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)
    53、針對 jQuery性能的優化方法?
    54、Jquery與jQuery UI有啥區別?
    55、JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?
    56、jquery 中如何將數組轉化為json字元串,然後再轉化回來?
    57、jQuery和Zepto的區別?各自的使用場景?
    58、針對 jQuery 的優化方法?
    59、Zepto的點透問題如何解決?
    60、jQueryUI如何自定義組件?
    61、需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?
    62、如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)
    63、移動端最小觸控區域是多大?
    64、jQuery 的 slideUp動畫 ,如果目標元素是被外部事件驅動, 當滑鼠快速地連續觸發外部元素事件, 動畫會滯後的反復執行,該如何處理呢?
    65、把 Script 標簽 放在頁面的最底部的body封閉之前 和封閉之後有什麼區別?瀏覽器會如何解析它們?
    66、移動端的點擊事件的有延遲,時間是多久,為什麼會有? 怎麼解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)
    67、知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能講出他們各自的優點和缺點么?
    68、Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?
    69、解釋JavaScript中的作用域與變數聲明提升?
    70、那些操作會造成內存泄漏?
    71、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
    72、Node.js的適用場景?
    (如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
    73、解釋一下 Backbone 的 MVC 實現方式?
    74、什麼是「前端路由」?什麼時候適合使用「前端路由」? 「前端路由」有哪些優點和缺點?
    75、知道什麼是webkit么? 知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
    76、如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎麼測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?
    77、前端templating(Mustache, underscore, handlebars)是幹嘛的, 怎麼用?
    78、簡述一下 Handlebars 的基本用法?
    79、簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?
    80、用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)
    檢測瀏覽器版本版本有哪些方式?
    81、我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲