前端最新最全面試題庫JS部分.docx_第1頁
前端最新最全面試題庫JS部分.docx_第2頁
前端最新最全面試題庫JS部分.docx_第3頁
前端最新最全面試題庫JS部分.docx_第4頁
前端最新最全面試題庫JS部分.docx_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、前端最新最全面試題庫JS部分1, 怎么實(shí)現(xiàn)跨域問題?«H*f£T4一噓各,卜"RUW-MS,TWTW問一Rg.不悶二曜埋gURLhttpVAvww d com/bis httfK :/www Jicom/b ji http7Acnpt.cofYVb.)s httpy/axocn/bjshftpVAvv a <o(n/b r對(duì)于端口和協(xié)議的不同,只能通過后臺(tái)來解決。我們要解決的是域名不同的問題。1.下面是用php進(jìn)行的設(shè)置,"* 號(hào)表示允許任何域向我 們的服務(wù)端提交請(qǐng)求:header("Access-Control-Allow-Origin

2、 : *"2JSONP(JSON with Padding 填充式 JSON 或參數(shù)式 JSON)在js中,我們雖然不能直接用XMLHttpRequest請(qǐng)求不同域上的數(shù)據(jù)時(shí),但是 在頁面上引入不同域上的js腳本文件卻是可以的,jsonp正是利用這個(gè)特性來實(shí) 現(xiàn)的。JSONP由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁面中 調(diào)用的函數(shù),而數(shù)據(jù)就是傳入回調(diào)函數(shù)中的JSON數(shù)據(jù)。2JSNOP的優(yōu)缺點(diǎn)優(yōu)點(diǎn):它的兼容性更好,在更加古老的瀏覽器中都可以運(yùn)行,不需要XMLHttpRequest 或ActiveX的支持;能夠直接訪問響應(yīng)文本,支持在瀏覽器與服務(wù)器之間雙向通 信 缺點(diǎn)

3、:23、簡(jiǎn)述列舉文檔對(duì)象模型DOM里document的常用的查找訪問節(jié)點(diǎn)的方法 做簡(jiǎn)單說明?答 : document.getElementByld 根據(jù)元素 id 查找元素 document.getElementByName 根據(jù)元素 name 查找元素 document.getElementTagName根據(jù)指定的元素名查找元素24、原生 JS 的 window.onload 與 Jquery 的$(document).ready(function () () , $(function () )有什么不同?答:1. 執(zhí)行時(shí)間window.onload必須等到頁面內(nèi)包括圖片的所有元素加載完畢后

4、才能執(zhí)行。$(document).ready()是DOM結(jié)構(gòu)繪制完畢后就執(zhí)行,不必等到加載完畢。2. 編寫個(gè)數(shù)不同window.onload不能同時(shí)編寫多個(gè),如果有多個(gè)window.onload方法,只會(huì)執(zhí) 行一個(gè)$(document).ready()可以同時(shí)編寫多個(gè),并且都可以得到執(zhí)行3. 簡(jiǎn)化寫法window.onload沒有簡(jiǎn)化寫法$(document).ready(function()()可以簡(jiǎn)寫成$(function()();25、簡(jiǎn)述在jQuery中.eq()和.get()的異同?答:相同:get():取得其中一個(gè)匹配的元素。數(shù)字序號(hào)表示取得第幾個(gè)匹配的元素eq():獲 取第N個(gè)元

5、素,下標(biāo)都是從0開始,用法基本相同。不同:eq返回的是一個(gè)jquery對(duì)象;返回的是jQuery對(duì)象,就可以繼續(xù)調(diào)用其他方 法。get返回的是一個(gè)html對(duì)象數(shù)組;不能調(diào)用jQuery的其他方法;JSONP是從其他域中加載代碼執(zhí)行。如果其他域不安全,很可能會(huì)在響應(yīng)中夾帶 一些惡意代碼,而此時(shí)除了完全放棄JSONP調(diào)用之外,沒有辦法追究。因此在使 用不是你自己運(yùn)維的Web服務(wù)時(shí),一定得保證它安全可靠。它只支持GET請(qǐng)求而不支持POST等其它類型的HTTP請(qǐng)求;它只支持跨域 HTTP請(qǐng)求這種情況,不能解決不同域的兩個(gè)頁面之間如何進(jìn)行JavaScript調(diào)用 的問題3、談?wù)刯s作用域和閉包?答:簡(jiǎn)單

6、的說,作用域是針對(duì)變量的,比如我們創(chuàng)建一個(gè)函數(shù)al ,函數(shù)里面 又包了一個(gè)子函數(shù)a20此時(shí)就存在三個(gè)作用域:全局作用域al作用域a2作用域;即全局作用域包含了 al的作用域, a2的作用域包含了 al的作用域。當(dāng)al在查找變量的時(shí)候會(huì)先從自身的作用域區(qū)查找,找不到再到上一級(jí)a2 的作用域查找,如果還沒找到就到全局作用域區(qū)查找這樣就形成了一個(gè)作用域鏈。理解閉包首先要理解,js垃圾回收機(jī)制,也就是當(dāng)一個(gè)函數(shù)被執(zhí)行完后,其作 用域會(huì)被收回,如果形成了閉包,執(zhí)行完后其作用域就不會(huì)被收回。如果某個(gè)函數(shù)被他的父函數(shù)之外的一個(gè)變量引用,就會(huì)形成閉包。閉包的作用,就是保存自己私有的變量,通過提供的接口(方法)

7、給外部使用, 但外部不能直接訪問該變量。4、什么是原型鏈?答:Javascript是面向?qū)ο蟮?,每個(gè)實(shí)例對(duì)象都有一個(gè)一pro to Ji性,該屬性指 向它原型對(duì)象,這個(gè)實(shí)例對(duì)象的構(gòu)造函數(shù)有一個(gè)原型屬性prototype ,與實(shí)例的 _proto_屬性指向同一個(gè)對(duì)象。當(dāng)一個(gè)對(duì)象在查找一個(gè)屬性的時(shí),自身沒有就會(huì)根 據(jù)_proto_向它的原型進(jìn)行查找,如果都沒有,則向它的原型的原型繼續(xù)查找,直 到查到Ototype_proto_為nul ,這樣也就形成了原型鏈。6、什么是事件冒泡/捕獲?答:事件冒泡:子元素事件的觸發(fā)會(huì)影響父元素事件;開關(guān)事件冒泡:A,開啟事件冒泡:element.

8、addEventListener(eventName ,handler ,false); B,關(guān)閉事件冒泡:假設(shè)傳統(tǒng)方式事件的返回值為e,就可以通過 e.stopPropagationQ來關(guān)閉事件冒泡;事件捕獲:父元素的事件會(huì)影響子元素的 事件;開啟事件捕獲:element.addEventListener(eventName , handler , true)7、請(qǐng)說說事件委托機(jī)制?這樣做有什么好處?答:事件委托,就是某個(gè)事件本來該自己干的,但是自己不干,交給別人來干。就 叫事件委托。打個(gè)比方:一個(gè)button對(duì)象,本來自己需要監(jiān)控自身的點(diǎn)擊事件, 但是自己不來監(jiān)控這個(gè)點(diǎn)擊事件,讓自己的父節(jié)

9、點(diǎn)來監(jiān)控自己的點(diǎn)擊事件。鼬:A ,提高性能:列如,當(dāng)有很多l(xiāng)i同時(shí)需要注冊(cè)事件的時(shí)候,如果使用傳統(tǒng)方 法來注冊(cè)事件的話,需要給每一個(gè)li注冊(cè)事件。然而如果使用委托事件的話,就 只需要將事件委托給該一個(gè)元素即可。這樣就能提高性能。B,新添加的元素還會(huì)有之前的事件;8、請(qǐng)列舉字符串操作的方法?charCodeAt方法返回一個(gè)整數(shù),代表指定位置字符的Unicode編碼;charAt方法返回指定索引位置處的字符。如果超出有效范 圍的索引值返回空字符串;slice方法返回字符串的片段; substring方法返回位于String對(duì)象中指定位置的子字符串。 substr方法返回一個(gè)從指定位置開始的指定長(zhǎng)度

10、的子字符串。indexOf方法返回String對(duì)象內(nèi)第一次出現(xiàn)子字符串位置。如果沒有 找至!1子字符串,則返回-1 ; lastlndexOf方法返回String對(duì)象中字符 串最后出現(xiàn)的位置。如果沒有匹配到子字符串,則返回-1 ; search方 法返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)字符串的位置。concat方法返回字符串值,該值包含了兩個(gè)或 多個(gè)提供的字符串的連接;split將一個(gè)字符串分割為子字符串,然后將結(jié)果作為字符串?dāng)?shù) 組返回;11、怎么理解jQuery ?答:JQuery是繼prototype之后又一個(gè)優(yōu)秀的Javascript庫。它是輕量級(jí)的js 庫,它兼容 CSS3 ,還兼容各

11、種瀏覽器(IE 6.0+, FF1.5+, Safari 2.0+ , Opera 9.0+ ), jQuery2.0及后續(xù)版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更 方便地處理HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用X events.實(shí)現(xiàn)動(dòng)畫效果, 并且方便地為網(wǎng)站提供AJAX交互。jQuery還有一個(gè)比較大的優(yōu)勢(shì)是,它的文檔說明很全,而且各種 應(yīng)用也說得很詳細(xì),同時(shí)還有許多成熟的插件可供選擇。jQuery能夠使用戶的 html頁面保持代碼和html內(nèi)容分離,也就是說,不用再在html里面插入一堆 js來調(diào)用命令了,只需要定義id即可。jQuery是一個(gè)兼容多瀏覽器的javas

12、cript庫,核心理念是write less , do more(寫得更少,做得更多)。jQuery在2006年1月由美國(guó)人John Resig在紐約的barcamp發(fā)布,吸引了來自世 界各地的眾多JavaScript高手加入,由Dave Methvin率領(lǐng)團(tuán)隊(duì)進(jìn)行開發(fā)。如今, jQuery已經(jīng)成為最流行的javascript庫,在世界前10000個(gè)訪問最多的網(wǎng)站中, 有超過55%在使用jQuery。jQuery是免費(fèi)、開源的,使用MIT許可協(xié)議。jQuery的語法設(shè)計(jì)可以使開發(fā)更 加便捷,例如操作文檔對(duì)象、選擇DOM元素、制作動(dòng)畫效果、事件處理、使用Ajax 以及其他功能。除此以外,jQue

13、ry提供API讓開發(fā)者編寫插件。其模塊化的使用 方式使開發(fā)者可以很輕松的開發(fā)出功能強(qiáng)大的靜態(tài)或動(dòng)態(tài)網(wǎng)頁。jQuery,顧名思義,也就是JavaScript和查詢(Query ),即是輔助JavaScript開發(fā)的庫。13、表單驗(yàn)證傳輸?shù)氖裁磾?shù)據(jù)?明文還是暗文*加密?如何加密?是每一次傳輸數(shù)據(jù),都是加密之后才傳輸嗎?答:概述:GET是從服務(wù)器上請(qǐng)求數(shù)據(jù),POST是發(fā)送數(shù)據(jù)到服務(wù)器。事實(shí)上,GET方法 是把數(shù)據(jù)參數(shù)隊(duì)歹U ( query string )加到一個(gè)URL上,值和表單是 對(duì)應(yīng)的。比 如說,name=John0在隊(duì)列里,值和表單用一個(gè)&符號(hào)分開,空格用+號(hào)替換,特殊 的符號(hào)轉(zhuǎn)換成

14、十六進(jìn)制的代碼。因?yàn)檫@一隊(duì)列在URL里邊,這樣隊(duì)列的參數(shù)就能 看得到,可以被記錄下來,或更改。通常GET方法還限制字符的大小(大概是256 字節(jié)事實(shí)上POST方法可以沒有時(shí)間限制的傳遞數(shù)據(jù)到服務(wù)器,用戶在瀏覽器端是 看不到這一過程的,所以POST方法匕匕較適合用于發(fā)送一個(gè)保密的(比如信用卡 號(hào))或者比較大量的數(shù)據(jù)到服務(wù)器。區(qū)別:Post是允許傳輸大量數(shù)據(jù)的方法,而Get方法會(huì)將所要傳輸?shù)臄?shù)據(jù)附在網(wǎng)址 后面,然后一起送達(dá)服務(wù)器,因此傳送的數(shù)據(jù)量就會(huì)受到限制,但是執(zhí)行效率卻比 Post方法好??偨Y(jié):1、get方式的安全性較Post方式要差些,包含機(jī)密信息的話,建議用Post 數(shù)據(jù)提交方式;2、在做

15、數(shù)據(jù)查詢時(shí),建議用Get方式;而在做數(shù)據(jù)添加、修改或刪除時(shí),建 議用Post方式;所以:表達(dá)如果是向服務(wù)器傳輸數(shù)據(jù)(如帳號(hào)密碼等)都是加密數(shù)據(jù)(post),如果只是單 單想要從服務(wù)器獲得數(shù)據(jù)或者傳輸?shù)臄?shù)據(jù)并不重要,可以直接使用明文方式傳輸 (get)14、面向?qū)ο蠛皖惖膮^(qū)別?答:簡(jiǎn)單的說類是對(duì)象的模版。在js中沒有類,所以在js中所謂的類就是構(gòu)造函數(shù),對(duì)象就是由構(gòu)造函數(shù) 創(chuàng)建出來的實(shí)例對(duì)象。面向?qū)ο缶褪鞘褂妹嫦驅(qū)ο蟮姆绞教幚韱栴},面向?qū)ο笫菍?duì) 面向過程進(jìn)行封裝。面向?qū)ο笥腥筇匦猿橄笮?,需要通過核心數(shù)據(jù)和特定環(huán)境才能描述對(duì)象的具體意義封裝性,封裝就是將數(shù)據(jù)和功能組合到一起,在js中對(duì)象就是鍵值

16、對(duì)的集合,對(duì) 象將屬性和方法封裝起來,方法將過程封裝起來繼承性,將別人的屬性和方法成為自己的,傳統(tǒng)繼承基于模板(類* js中繼承基 于構(gòu)造函數(shù)對(duì)象的概念,面向?qū)ο缶幊痰某绦驅(qū)嶋H就是多個(gè)對(duì)象的集合,我們可以把所有的事 物都抽象成對(duì)象在程序設(shè)計(jì)中可以看作對(duì)象二屬性+方法。屬性就是對(duì)象的數(shù)據(jù), 而方法就是對(duì)象的行為。類的概念,類是對(duì)象的模版,而對(duì)象是類的實(shí)例化。舉個(gè)例子,汽車設(shè)計(jì)圖可以看 作是類,而具體的汽車就是對(duì)象。再比如有一個(gè)類是表示人,然后可以通過人這個(gè) 模版來實(shí)例化出張三、李四。15、在JS的計(jì)時(shí)器運(yùn)行原理是怎樣的,為什么可以觸發(fā)計(jì)時(shí)效果?計(jì)時(shí)器是多線程嗎?答:1. javascript引擎

17、只有一個(gè)線程,強(qiáng)迫異步事件排隊(duì)等待被執(zhí)行。2. setTimeout和setinterval本質(zhì)上不同的地方是他們?nèi)绾螆?zhí)行異步代碼的。3. 如果一個(gè)定時(shí)器正在執(zhí)行的時(shí)候被阻塞了,那么它將會(huì)被推遲到下一個(gè)可能的 執(zhí)行點(diǎn),這既是使得延遲時(shí)間有可能會(huì)超過聲明定時(shí)器時(shí)設(shè)置的值。4. Interval如果有足夠的時(shí)間來執(zhí)行(大于制定的延遲),那么它將會(huì)無延遲的一 個(gè)緊接著一個(gè)執(zhí)行。原理:計(jì)時(shí)器通過設(shè)定一定的時(shí)間段(毫秒)來異步的執(zhí)行一段代碼。因?yàn)镴avascript是 _個(gè)單線程語言,計(jì)時(shí)器提供了一種繞過這種語言限制來執(zhí)行代碼的能力。總結(jié):計(jì)時(shí)器是單線程的,需要等待上一個(gè)執(zhí)行完,如果上f沒有執(zhí)行完,下一

18、個(gè)需 要延遲執(zhí)行,知道上一個(gè)執(zhí)行完16、如何查找構(gòu)造函數(shù)和原型中的屬性?答:構(gòu)造函數(shù)-prototype 查看構(gòu)造函數(shù)的原型屬性實(shí)例對(duì)象._proto_查看實(shí)例對(duì)象的構(gòu)造函數(shù)的原型實(shí)例對(duì)象._proto_.constructor查看實(shí)例對(duì)象的構(gòu)造函數(shù)17、js中一共有幾種數(shù)據(jù)類型?答:Undefined、NulL Boolean. Number 和 String0還有一種復(fù)雜的數(shù)據(jù)類型Object, Object本質(zhì)是一組無序的名值對(duì)組成的。18、call和apply的區(qū)別答:它們的共同之處:都"可以用來代替另一個(gè)對(duì)象調(diào)用一個(gè)方法,將一個(gè)函數(shù)的對(duì)象上下文從初始的上 下文改變?yōu)橛蓆hi

19、sObj指定的新對(duì)象。"它們的不同之處:apply :最多只能有兩個(gè)參數(shù)新this對(duì)象和一個(gè)數(shù)組argArraye如果給該方 法傳遞多個(gè)參數(shù),則把參數(shù)都寫進(jìn)這個(gè)數(shù)組里面,當(dāng)然,即使只有一個(gè)參數(shù),也要 寫進(jìn)數(shù)組里面。如果argArray不是一個(gè)有效的數(shù)組或者不是arguments對(duì)象, 那么將導(dǎo)致一個(gè)TypeError。如果沒有提供argArray和thisObj任何f 參數(shù), 那么Global對(duì)象將被用作thisObj ,并且無法被傳遞任何參數(shù)。call :則是直接的參數(shù)列表,主要用在js對(duì)象各方法互相調(diào)用的時(shí)候,使當(dāng)前this 實(shí)例指針保持一致,或在特殊情況下需要改變this指針。如果沒有提供thisObj 參數(shù),那么Global對(duì)象被用作thisObj。更簡(jiǎn)單地說,apply和call功能一樣,只是傳入的參數(shù)列表形式不同:如 func.call(funcl , varl , var2 , var3)對(duì)應(yīng)的 apply 寫法為:func.apply(funcl ,varl , var2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論