您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)AJAX有哪些常見(jiàn)面試問(wèn)題,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
1.工作當(dāng)中會(huì)和后臺(tái)交互嗎? 那你能說(shuō)說(shuō)封裝好的 ajax里的幾個(gè)參數(shù)嗎 ?
url: 發(fā)送請(qǐng)求的地址。
type: 請(qǐng)求方式(post或get)默認(rèn)為get。
async: 同步異步請(qǐng)求,默認(rèn)true所有請(qǐng)求均為異步請(qǐng)求。
timeout : 超時(shí)時(shí)間設(shè)置,單位毫秒
data:要求為Object或String類型的參數(shù),發(fā)送到服務(wù)器的數(shù)據(jù)
cache:默認(rèn)為true(當(dāng)dataType為script時(shí),默認(rèn)為false), 設(shè)置為false將不會(huì)從瀏覽器緩存中加載請(qǐng)求信息。
dataType: 預(yù)期服務(wù)器返回的數(shù)據(jù)類型。
可用的類型如下:
xml:返回XML文檔,可用JQuery處理。
html:返回純文本HTML信息;包含的script標(biāo)簽會(huì)在插入DOM時(shí)執(zhí)行。
script:返回純文本JavaScript代碼。不會(huì)自動(dòng)緩存結(jié)果。
json:返回JSON數(shù)據(jù)。
jsonp:JSONP格式。使用JSONP形式調(diào)用函數(shù)時(shí),例如myurl?callback=?,JQuery將自動(dòng)替換后一個(gè)“?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。
text:返回純文本字符串。
success:請(qǐng)求成功后調(diào)用的回調(diào)函數(shù),有兩個(gè)參數(shù)。
(1) 由服務(wù)器返回,并根據(jù)dataType參數(shù)進(jìn)行處理后的數(shù)據(jù)。
(2) 描述狀態(tài)的字符串。
error:要求為Function類型的參數(shù),請(qǐng)求失敗時(shí)被調(diào)用的函數(shù)。該函數(shù)有3個(gè)參數(shù)
(1) XMLHttpRequest對(duì)象
(2) 錯(cuò)誤信息
(3) 捕獲的錯(cuò)誤對(duì)象(可選)
complete :function(XMLHttpRequest,status){ //請(qǐng)求完成后最終執(zhí)行參數(shù)
2.json數(shù)據(jù) 如果怎么處理 他的格式 你以前工作中有沒(méi)有固定格式 如果我發(fā)送一個(gè)請(qǐng)求 刪除數(shù)據(jù)里的一條數(shù)據(jù) 我怎么知道刪除成功了 或者說(shuō) 刪除后 會(huì)在哪里顯示
JSON.parse() 轉(zhuǎn)換為JSON對(duì)象,根據(jù)數(shù)據(jù)進(jìn)行解析,放到頁(yè)面中。
格式:{} 與 [] 結(jié)合拼接的JSON串
發(fā)送請(qǐng)求刪除數(shù)據(jù),后臺(tái)會(huì)返回處理的結(jié)果,前臺(tái)根據(jù)返回的結(jié)果判斷是否成功,然后處理頁(yè)面元素。
3.有沒(méi)有遇到過(guò)這種情況 在ie瀏覽器中 后臺(tái)圖片數(shù)據(jù)已經(jīng)改變 但是客戶端沒(méi)有發(fā)生改變 該怎么處理? 他提示說(shuō)瀏覽器的緩存
JQuery.ajax() 方法,設(shè)置cache為false,就不會(huì)從瀏覽器緩存中加載請(qǐng)求,
或者利用post方法,請(qǐng)求數(shù)據(jù),不會(huì)緩存,每次都是重新請(qǐng)求數(shù)據(jù)
4.選項(xiàng)卡的實(shí)現(xiàn)思路
鼠標(biāo)懸浮時(shí)間,調(diào)用方法,傳入this,對(duì)所有的選項(xiàng)卡內(nèi)容部分隱藏操作,對(duì)this的進(jìn)行顯示操作,控制display
5.級(jí)聯(lián) 的實(shí)現(xiàn)思路
一般地區(qū)數(shù)據(jù)都是利用二維數(shù)組存儲(chǔ),從后臺(tái)獲取到以后存儲(chǔ)起來(lái),根據(jù)第一個(gè)下拉框的選項(xiàng),找到對(duì)應(yīng)的二維數(shù)組數(shù)據(jù),循環(huán)new Option() add進(jìn)下拉框
6. 輪播圖的實(shí)現(xiàn)思路
第一種:
把圖片名稱按順序取好名字,利用定時(shí)器,每隔多少秒,更換圖片的路徑
第二種:
利用無(wú)縫滾動(dòng)的技術(shù),把圖片都放入頁(yè)面中,定時(shí)器進(jìn)行scroll滾動(dòng),判斷滾動(dòng)距離取余(%) 圖片寬度等于0,暫停定時(shí)器,多少秒后再開(kāi)啟定時(shí)器。
7.說(shuō)說(shuō)你理解中的bootstrap
Bootstrap是基于HTML5和CSS3開(kāi)發(fā)的,它在jQuery的基礎(chǔ)上進(jìn)行了更為個(gè)性化和人性化的完善,只需要給標(biāo)簽起上響應(yīng)的Class名稱,就可以形成一套Bootstrap自己獨(dú)有的網(wǎng)站風(fēng)格,并兼容大部分jQuery插件。
8.angularjs和JQ的區(qū)別
JQ 先獲取再使用。
Angularjs 直接使用
9.JQmobile和JQ的區(qū)別
jQuery Mobile 是創(chuàng)建移動(dòng) web 應(yīng)用程序的框架。jQuery Mobile 適用于所有流行的智能手機(jī)和平板電腦。jQuery Mobile 使用 HTML5 和 CSS3 通過(guò)盡可能少的腳本對(duì)頁(yè)面進(jìn)行布局
(1) jQuery是一個(gè)js庫(kù),主要提供的功能是選擇器,屬性修改和事件綁定等等。
(2) jQuery UI則是在jQuery的基礎(chǔ)上,利用jQuery的擴(kuò)展性,設(shè)計(jì)的插件。提供了一些常用的界面元素,諸如對(duì)話框、拖動(dòng)行為、改變大小行為等等。
(3) jQuery本身注重于后臺(tái),沒(méi)有漂亮的界面,而jQuery UI則補(bǔ)充了前者的不足,他提供了華麗的展示界面,使人更容易接受。既有強(qiáng)大的后臺(tái),又有華麗的前臺(tái)。jQuery UI是jQuery插件,只不過(guò)專指由jQuery官方維護(hù)的UI方向的插件。
10.你工作當(dāng)中用過(guò)那些庫(kù)?
11.(1)冒泡排序,60秒倒計(jì)時(shí),(2)頁(yè)面加載更多l(xiāng)i時(shí)怎么處理后臺(tái)反回的json數(shù)據(jù)
1.雙重循環(huán),從第一位開(kāi)始判斷與后面每一位的大小,如果符合條件利用下面的原理?yè)Q位置
c = a;
a = b;
b = c;
2.利用JSON.parse() 獲得相應(yīng)的JSON對(duì)象,循環(huán)添加li,數(shù)據(jù)放進(jìn)去。
12.全選的實(shí)現(xiàn)思路
點(diǎn)擊全選復(fù)選框時(shí),判斷checked是true還是false,是true證明全都選中,獲取到下面所有的對(duì)應(yīng)的復(fù)選框,把checked改成true,否則改成false。
13.有一個(gè)輸入框,只允許輸入數(shù)字或字母,如果輸入不合法則將輸入框的邊框變?yōu)榧t色,寫(xiě)代碼
var reg =/^[a-zA-Z0-9]+$/; if(!reg.text(輸入框取出的value)){ input.style.border= “red”; };
14.有一個(gè)數(shù)組a=[1,2,3],如果數(shù)字a中包含1,則將數(shù)組內(nèi)容復(fù)制一遍變?yōu)閇1,2,3,1,2,3],寫(xiě)代碼
for(var i = 0;i<a.length;i++){ if(a[i] ==1){ a.concat(a); break; } }15.寫(xiě)一個(gè)函數(shù),用于生產(chǎn)隨機(jī)密碼,傳入的參數(shù)為密碼的長(zhǎng)度,返回生產(chǎn)的隨機(jī)密碼,要求生成的隨機(jī)密碼必須含有大寫(xiě)字母、小寫(xiě)字母和數(shù)字
var padArr = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"];var padStr = "";function asd(length){ for(var i = 0 ; i<length;i++){ padStr += padArr[Math.floor(Math.random()*padArr.length)]; } }
16.點(diǎn)擊按鈕向后臺(tái)發(fā)起請(qǐng)求,將返回的數(shù)據(jù)直接輸出,如果3秒內(nèi)沒(méi)有獲得返回的數(shù)據(jù)則顯示“請(qǐng)求超時(shí),請(qǐng)重新提交”,寫(xiě)代碼
varajaxTimeoutTest = $.ajax({ url:'', //請(qǐng)求的URL timeout : 1000, //超時(shí)時(shí)間設(shè)置,單位毫秒 type : 'get', //請(qǐng)求方式,get或post data :{}, //請(qǐng)求所傳參數(shù),json格式 dataType:'json',//返回的數(shù)據(jù)格式 success:function(data){ //請(qǐng)求成功的回調(diào)函數(shù) alert("成功"); }, complete : function(XMLHttpRequest,status){ //請(qǐng)求完成后最終執(zhí)行參數(shù) if(status=='timeout'){//超時(shí),status還有success,error等值的情況 ajaxTimeoutTest.abort();//終止請(qǐng)求 alert("超時(shí)"); } } });
17.ajax的四部:
var xmlhttp = new XMLHttpRequest(); xmlhttp.open("post||get","URL",true||false); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.onreadystatechange = callBack; xmlhttp.send(null);
18.ajax接受到的數(shù)據(jù)類型是什么?
String
JSON串
JSON對(duì)象
19.ajax接受到的數(shù)據(jù)如何處理?
JSON對(duì)象直接循環(huán)使用
JSON串轉(zhuǎn)JSON使用
String直接使用
20.哪些地方需要ajax,哪些地方不需要,ajax的優(yōu)點(diǎn)是什么,缺點(diǎn)是什么?
頁(yè)面不進(jìn)行跳轉(zhuǎn)刷新的時(shí)候,異步處理數(shù)據(jù)的時(shí)候,表單自動(dòng)補(bǔ)全功能----使用Ajax,
提交后不再使用原頁(yè)面,可以進(jìn)行跳轉(zhuǎn)刷新的,查詢之類的功能,可以不用Ajax
優(yōu)點(diǎn):
<1>.無(wú)刷新更新數(shù)據(jù)。
AJAX最大優(yōu)點(diǎn)就是能在不刷新整個(gè)頁(yè)面的前提下與服務(wù)器通信維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地響應(yīng)用戶交互,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒(méi)有改變的信息,減少用戶等待時(shí)間,帶來(lái)非常好的用戶體驗(yàn)。
<2>.異步與服務(wù)器通信。
AJAX使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。優(yōu)化了Browser和Server之間的溝通,減少不必要的數(shù)據(jù)傳輸、時(shí)間及降低網(wǎng)絡(luò)上數(shù)據(jù)流量。
<3>.前端和后端負(fù)載平衡。
AJAX可以把以前一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的能力來(lái)處理,減輕服務(wù)器和帶寬的負(fù)擔(dān),節(jié)約空間和寬帶租用成本。并且減輕服務(wù)器的負(fù)擔(dān),AJAX的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請(qǐng)求和響應(yīng)對(duì)服務(wù)器造成的負(fù)擔(dān),提升站點(diǎn)性能。
<4>.基于標(biāo)準(zhǔn)被廣泛支持。
AJAX基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù),不需要下載瀏覽器插件或者小程序,但需要客戶允許JavaScript在瀏覽器上執(zhí)行。隨著Ajax的成熟,一些簡(jiǎn)化Ajax使用方法的程序庫(kù)也相繼問(wèn)世。同樣,也出現(xiàn)了另一種輔助程序設(shè)計(jì)的技術(shù),為那些不支持JavaScript的用戶提供替代功能。
<5>.界面與應(yīng)用分離。
Ajax使WEB中的界面與應(yīng)用分離(也可以說(shuō)是數(shù)據(jù)與呈現(xiàn)分離),有利于分工合作、減少非技術(shù)人員對(duì)頁(yè)面的修改造成的WEB應(yīng)用程序錯(cuò)誤、提高效率、也更加適用于現(xiàn)在的發(fā)布系統(tǒng)。
缺點(diǎn):
<1>.AJAX干掉了Back和History功能,即對(duì)瀏覽器機(jī)制的破壞。
在動(dòng)態(tài)更新頁(yè)面的情況下,用戶無(wú)法回到前一個(gè)頁(yè)面狀態(tài),因?yàn)闉g覽器僅能記憶歷史記錄中的靜態(tài)頁(yè)面。一個(gè)被完整讀入的頁(yè)面與一個(gè)已經(jīng)被動(dòng)態(tài)修改過(guò)的頁(yè)面之間的差別非常微妙;用戶通常會(huì)希望單擊后退按鈕能夠取消他們的前一次操作,但是在Ajax應(yīng)用程序中,這將無(wú)法實(shí)現(xiàn)。
后退按鈕是一個(gè)標(biāo)準(zhǔn)的web站點(diǎn)的重要功能,但是它沒(méi)法和js進(jìn)行很好的合作。這是Ajax所帶來(lái)的一個(gè)比較嚴(yán)重的問(wèn)題,因?yàn)橛脩敉窍M軌蛲ㄟ^(guò)后退來(lái)取消前一次操作的。那么對(duì)于這個(gè)問(wèn)題有沒(méi)有辦法?答案是肯定的,用過(guò)Gmail的知道,Gmail下面采用的Ajax技術(shù)解決了這個(gè)問(wèn)題,在Gmail下面是可以后退的,但是,它也并不能改變Ajax的機(jī)制,它只是采用的一個(gè)比較笨但是有效的辦法,即用戶單擊后退按鈕訪問(wèn)歷史記錄時(shí),通過(guò)創(chuàng)建或使用一個(gè)隱藏的IFRAME來(lái)重現(xiàn)頁(yè)面上的變更。(例如,當(dāng)用戶在Google Maps中單擊后退時(shí),它在一個(gè)隱藏的IFRAME中進(jìn)行搜索,然后將搜索結(jié)果反映到Ajax元素上,以便將應(yīng)用程序狀態(tài)恢復(fù)到當(dāng)時(shí)的狀態(tài)。)
但是,雖然說(shuō)這個(gè)問(wèn)題是可以解決的,但是它所帶來(lái)的開(kāi)發(fā)成本是非常高的,并與Ajax框架所要求的快速開(kāi)發(fā)是相背離的。這是Ajax所帶來(lái)的一個(gè)非常嚴(yán)重的問(wèn)題。
一個(gè)相關(guān)的觀點(diǎn)認(rèn)為,使用動(dòng)態(tài)頁(yè)面更新使得用戶難于將某個(gè)特定的狀態(tài)保存到收藏夾中。該問(wèn)題的解決方案也已出現(xiàn),大部分都使用URL片斷標(biāo)識(shí)符(通常被稱為錨點(diǎn),即URL中#后面的部分)來(lái)保持跟蹤,允許用戶回到指定的某個(gè)應(yīng)用程序狀態(tài)。(許多瀏覽器允許JavaScript動(dòng)態(tài)更新錨點(diǎn),這使得Ajax應(yīng)用程序能夠在更新顯示內(nèi)容的同時(shí)更新錨點(diǎn)。)這些解決方案也同時(shí)解決了許多關(guān)于不支持后退按鈕的爭(zhēng)論。
<2>.AJAX的安全問(wèn)題。
AJAX技術(shù)給用戶帶來(lái)很好的用戶體驗(yàn)的同時(shí)也對(duì)IT企業(yè)帶來(lái)了新的安全威脅,Ajax技術(shù)就如同對(duì)企業(yè)數(shù)據(jù)建立了一個(gè)直接通道。這使得開(kāi)發(fā)者在不經(jīng)意間會(huì)暴露比以前更多的數(shù)據(jù)和服務(wù)器邏輯。Ajax的邏輯可以對(duì)客戶端的安全掃描技術(shù)隱藏起來(lái),允許黑客從遠(yuǎn)端服務(wù)器上建立新的攻擊。還有Ajax也難以避免一些已知的安全弱點(diǎn),諸如跨站點(diǎn)腳步攻擊、SQL注入攻擊和基于Credentials的安全漏洞等等。
<3>.對(duì)搜索引擎支持較弱。
對(duì)搜索引擎的支持比較弱。如果使用不當(dāng),AJAX會(huì)增大網(wǎng)絡(luò)數(shù)據(jù)的流量,從而降低整個(gè)系統(tǒng)的性能。
<4>.破壞程序的異常處理機(jī)制。
至少?gòu)哪壳翱磥?lái),像Ajax.dll,Ajaxpro.dll這些Ajax框架是會(huì)破壞程序的異常機(jī)制的。關(guān)于這個(gè)問(wèn)題,曾在開(kāi)發(fā)過(guò)程中遇到過(guò),但是查了一下網(wǎng)上幾乎沒(méi)有相關(guān)的介紹。后來(lái)做了一次試驗(yàn),分別采用Ajax和傳統(tǒng)的form提交的模式來(lái)刪除一條數(shù)據(jù)……給我們的調(diào)試帶來(lái)了很大的困難。
<5>.違背URL和資源定位的初衷。
例如,我給你一個(gè)URL地址,如果采用了Ajax技術(shù),也許你在該URL地址下面看到的和我在這個(gè)URL地址下看到的內(nèi)容是不同的。這個(gè)和資源定位的初衷是相背離的。
<6>.AJAX不能很好支持移動(dòng)設(shè)備。
一些手持設(shè)備(如手機(jī)、PDA等)現(xiàn)在還不能很好的支持Ajax,比如說(shuō)我們?cè)谑謾C(jī)的瀏覽器上打開(kāi)采用Ajax技術(shù)的網(wǎng)站時(shí),它目前是不支持的。
<7>.客戶端過(guò)肥,太多客戶端代碼造成開(kāi)發(fā)上的成本。
編寫(xiě)復(fù)雜、容易出錯(cuò);冗余代碼比較多(層層包含js文件是AJAX的通病,再加上以往的很多服務(wù)端代碼現(xiàn)在放到了客戶端);破壞了Web的原有標(biāo)準(zhǔn)。
21.你對(duì)于跨域請(qǐng)求了解多少?
同源策略規(guī)定在訪問(wèn)時(shí)如果域名,協(xié)議,端口與發(fā)起請(qǐng)求的地方不一致時(shí),就屬于跨域請(qǐng)求,
這種時(shí)候,需要使用一些跨域請(qǐng)求的技術(shù),
一:
利用JQuery的方法,使用JSONP模式訪問(wèn),dataType:‘jsonp’并且再url后傳入callback=?
JQuery會(huì)生成隨機(jī)回調(diào)函數(shù)名稱,或者你自己起名字。
后臺(tái)會(huì)獲取callback的值,連接上() 把數(shù)據(jù)放入() 中,返回頁(yè)面,
相當(dāng)于調(diào)用函數(shù)function名(data)。
二:
使用js標(biāo)簽加載方式
利用script標(biāo)簽 src寫(xiě)想要請(qǐng)求的URL,地址后面連接上參數(shù)?callback= 函數(shù)名
后臺(tái)會(huì)獲取callback的值,連接上() 把數(shù)據(jù)放入() 中,返回頁(yè)面,
相當(dāng)于調(diào)用函數(shù)function名(data)
三:
后臺(tái)直接開(kāi)啟同源策略的訪問(wèn)限制,設(shè)置響應(yīng)頭信息。
response.setHeader("Access-Control-Allow-Origin","*");
22.如何控制網(wǎng)頁(yè)在網(wǎng)絡(luò)傳輸中的數(shù)據(jù)量?
分頁(yè)加載,瀑布流,限制每次加載的數(shù)據(jù)量。(??????不確定)
23.前端常規(guī)開(kāi)發(fā)優(yōu)化策略?
請(qǐng)減少HTTP請(qǐng)求
請(qǐng)正確理解 Repaint 和 Reflow
請(qǐng)減少對(duì)DOM的操作
使用JSON格式來(lái)進(jìn)行數(shù)據(jù)交換
高效使用HTML標(biāo)簽和CSS樣式
使用CDN加速(內(nèi)容分發(fā)網(wǎng)絡(luò))
將CSS和JS放到外部文件中引用,CSS放頭,JS放尾
精簡(jiǎn)CSS和JS文件(壓縮)
壓縮圖片和使用圖片Sprite技術(shù)
注意控制Cookie大小和污染
24.為什么異步加載JS文件?加載方式?
平時(shí)常用的引入JS方式,是同步模式,又稱阻塞模式,會(huì)阻止瀏覽器的后續(xù)處理,停止了后續(xù)的解析,也就是說(shuō),瀏覽器在下載或執(zhí)行該js代碼塊時(shí),后面的標(biāo)簽不會(huì)被解析。
異步加載(async)JS文件,允許頁(yè)面內(nèi)容異步加載,僅適用于外部腳本。
延遲加載(defer)屬性規(guī)定是否對(duì)腳本執(zhí)行進(jìn)行延遲,直到頁(yè)面加載為止。
25.如果對(duì)一個(gè)js對(duì)象進(jìn)行深度拷貝?
varajaxTimeoutTest = $.ajax({ url:'', //請(qǐng)求的URL timeout : 1000, //超時(shí)時(shí)間設(shè)置,單位毫秒 type : 'get', //請(qǐng)求方式,get或post data :{}, //請(qǐng)求所傳參數(shù),json格式 dataType:'json',//返回的數(shù)據(jù)格式 success:function(data){ //請(qǐng)求成功的回調(diào)函數(shù) alert("成功"); }, complete : function(XMLHttpRequest,status){ //請(qǐng)求完成后最終執(zhí)行參數(shù) if(status=='timeout'){//超時(shí),status還有success,error等值的情況 ajaxTimeoutTest.abort();//終止請(qǐng)求 alert("超時(shí)"); } } });
26.JS中有哪些數(shù)據(jù)類型?
number boolean string underfind null
object function array
27.ajax交換模型?同步異步的區(qū)別?
觸發(fā)事件調(diào)用函數(shù)
創(chuàng)建XMlHttpRequest 對(duì)象open連接,send發(fā)送后臺(tái)服務(wù)器
后臺(tái)接收前端數(shù)據(jù),根據(jù)業(yè)務(wù)需求訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行增刪改查
數(shù)據(jù)庫(kù)返回后臺(tái)程序所需要的數(shù)據(jù)
后臺(tái)拿到數(shù)據(jù)庫(kù)數(shù)據(jù),進(jìn)行合理的處理,比如JSON串,返回給前端
前端接收到后臺(tái)的響應(yīng)數(shù)據(jù),進(jìn)行解析,根據(jù)業(yè)務(wù)需求動(dòng)態(tài)操作頁(yè)面元素
28.如何添加HTML事件,三種。
1. 直接在html標(biāo)簽的屬性上添加<p οnclick="alert('p')">p</p> 2. 用dom的on...方法添加document.getElementById('p').onclick = function () {alert('p')}; 3. 用事件監(jiān)聽(tīng)addEventListener或attachEvent(IE)添加document.getElementById('p').addEventListener('click', function () {alert('p')}, false);
29.JS面向?qū)ο笾欣^承的實(shí)現(xiàn)方式?
簡(jiǎn)單繼承:
function A(x){ this.x=x; }
function B(x,y){ this.tmpObj=A; this.tmpObj(x); delete this.tmpObj; this.y=y; }
完美繼承:
function AA(x){ this.x = x;}AA.prototype.xxx = 2;function Obj(){ AA.call(this,22); this.cc = 11; this.constructor = arguments.callee; }Obj.prototype = new AA();var obj = new Obj();
30.編寫(xiě)一個(gè)方法,判斷字符串是否是這樣的組成,第一個(gè)必須是字母,最后一個(gè)必須是數(shù)字。
function checkStr(str){ var diyige =str.subStr(0,1); var dierge =str.subStr(str.length-1,1); var reg = /^[a-zA-Z]$/ if(reg.test(diyige) &&!isNAN(dierge)){ //第一個(gè)是字母,最后一個(gè)是數(shù)字 } }
31.如何隱藏一個(gè)DOM元素?
Object.style.dispaly = “none”; || Object.style.visibility = “hidden”;
32.document.write,innerHTML和innertext區(qū)別是什么?
document.write只能重繪整個(gè)頁(yè)面
innerHTML可以重繪頁(yè)面的一部分(包含標(biāo)簽+文字)
innertext可以重繪頁(yè)面的一部分(只包含文字)
33.字符串a(chǎn)bcdefg把de換成12,b后面接le,寫(xiě)出JS。
var str = “abcdefg”; str = str.replace(“de”,”12”); str = str.replace(“b”,”b1e”);
或者
var str = “abcdefg”; str = str.split(“de”,”12”); var str1 =str.subString(0,str.indexOf(‘b’)+1); var str2 =str.subString(str.indexOf(‘b’)+1); str = str1+”1e”+str2;
34.判斷每個(gè)字符出現(xiàn)的次數(shù):hello,最后顯示: h:1,e:1,l:2,o:1.
var str = “hello”; var o = []; for(var i = 0 ;i<str.length;i++){ if(str.indexOf(str[i]) == i){ o[str[i]] = str.split(str[i]).length-1; } } console.log(o);
35.使用CSS3動(dòng)畫(huà)效果實(shí)現(xiàn)一個(gè)小球的來(lái)回滾動(dòng)。
36.h6的canvas畫(huà)板如何實(shí)現(xiàn)會(huì)旋轉(zhuǎn)的地球儀效果?(說(shuō)出思想)
37.如何使過(guò)長(zhǎng)的字體自動(dòng)隱藏?
text-overflow: hidden ;
38.一個(gè)H5+C3的鼠標(biāo)懸停效果?
39.移動(dòng)端跟PC端的js文件區(qū)別?
40.如何處理一些手機(jī)端的兼容性?
41.IE瀏覽器兼容性,你了解哪些,簡(jiǎn)單舉例子。
addEventListener() || attachEvent()
42.談?wù)勀銓?duì)框架的理解。
對(duì)功能進(jìn)行封裝,使用者直接調(diào)用,或?qū)邮竭M(jìn)行預(yù)設(shè)置,使用者直接起名字
43.如何實(shí)現(xiàn)跨域?具體怎么實(shí)現(xiàn)?
第一種:
JSONP,利用傳遞方法名的方式,告訴后臺(tái)前端方法名是什么,后臺(tái)取到后,在名稱后面拼接(),把數(shù)據(jù)(DATA)放到小括號(hào)中,返回前端,相當(dāng)于返回:方法名(data)到前端后就直接調(diào)用這個(gè)方法了。
$.get(“ULR?callback=?”,function(data){ console.log(data); })
第二種:
前端正常Ajax訪問(wèn),后臺(tái)開(kāi)啟同源策略限制!
“Access-Control-Allow-Origin”,”*”
44.對(duì)后臺(tái)語(yǔ)言了解幾種,如果了解其中一種,舉例說(shuō)明一個(gè)?
45.與后臺(tái)的交互,AJAX只是其中的一小部分,其他的知道嗎?
46.在上一家公司的要上線作品的具體流程是什么?
前后臺(tái)項(xiàng)目整合,測(cè)試,上線
47.手機(jī)端和PC端有什么區(qū)別,需要注意哪些方面?
本質(zhì)上沒(méi)有什么太大的區(qū)別,需要注意一些瀏覽器的兼容問(wèn)題。
48.用JQ完整的寫(xiě)出AJAX與后臺(tái)交互的方法。
$.get(“url”,function(data){ }); $.post(“url”,{data},function(data){ }); $.ajax({ url:””, ...... ..... .... });
49.編寫(xiě)一段jq的方法擴(kuò)展。
50.ECMAScript6怎么寫(xiě)class. 為什么會(huì)出現(xiàn)class這種東西?
51.如何判斷一個(gè)對(duì)象是否屬于某個(gè)類?
var obj = new String("abc"); alert(obj instanceof String);
52.使用過(guò)哪些可視化控件?
53.什么是閉包?
簡(jiǎn)單理解成:定義在一個(gè)函數(shù)內(nèi)部的函數(shù)
閉包本質(zhì):將函數(shù)內(nèi)部和函數(shù)外部連接起來(lái)的一座橋梁
最大用處:
1、可以讀取函數(shù)內(nèi)部變量
2、就是讓這些變量始終保持在內(nèi)存中,即閉包可以使得它誕生環(huán)境一直存在
54.eval可以計(jì)算某個(gè)字符串,有沒(méi)有更好的方式?
55.初始化CSS除了瀏覽器兼容還有什么作用?
關(guān)于AJAX有哪些常見(jiàn)面試問(wèn)題就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。