溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AJAX有哪些常見(jiàn)面試問(wèn)題

發(fā)布時(shí)間:2020-08-03 09:44:02 來(lái)源:億速云 閱讀:178 作者:Leah 欄目:web開(kāi)發(fā)

這篇文章將為大家詳細(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)求方式(postget)默認(rèn)為get。

async: 同步異步請(qǐng)求,默認(rèn)true所有請(qǐng)求均為異步請(qǐng)求。

timeout : 超時(shí)時(shí)間設(shè)置,單位毫秒

data:要求為ObjectString類型的參數(shù),發(fā)送到服務(wù)器的數(shù)據(jù)

cache:默認(rèn)為true(當(dāng)dataTypescript時(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ù)。

jsonpJSONP格式。使用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è)置cachefalse,就不會(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是基于HTML5CSS3開(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 UIjQuery插件,只不過(guò)專指由jQuery官方維護(hù)的UI方向的插件。

10.你工作當(dāng)中用過(guò)那些庫(kù)?

jQuery

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í),判斷checkedtrue還是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)化了BrowserServer之間的溝通,減少不必要的數(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干掉了BackHistory功能,即對(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.dllAjaxpro.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ò))

  • CSSJS放到外部文件中引用,CSS放頭,JS放尾

  • 精簡(jiǎn)CSSJS文件(壓縮)

  • 壓縮圖片和使用圖片Sprite技術(shù)

  • 注意控制Cookie大小和污染

24.為什么異步加載JS文件?加載方式?

平時(shí)常用的引入JS方式,是同步模式,又稱阻塞模式,會(huì)阻止瀏覽器的后續(xù)處理,停止了后續(xù)的解析,也就是說(shuō),瀏覽器在下載或執(zhí)行該js代碼塊時(shí),后面的標(biāo)簽不會(huì)被解析。

異步加載(asyncJS文件,允許頁(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ò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI