JS-Web-Api面試題

這篇主要是說(shuō)JS的一些api,其中包括DOM憋沿,BOM旺芽,事件,ajax辐啄,存儲(chǔ)采章,都是實(shí)際開(kāi)發(fā)會(huì)用到的,但是這些都是JS的哦壶辜,不涉及jquery悯舟,vue框架等。

一砸民、DOM操作

知識(shí)點(diǎn)

1. 事件模型
  • 捕獲
  • 冒泡
2. 事件流
  • 捕獲用戶行為 -> 目標(biāo)階段 -> 冒泡
  • 捕獲的具體流程:
    window -> document -> html -> body -> 元素之間的傳遞
    冒泡是從下往上
3. Event對(duì)象的常見(jiàn)用法
  • 阻止冒泡:event.stopPropagation()
  • 阻止默認(rèn)行為:event.preventDefault()
  • 同一個(gè)元素綁定多個(gè)事件抵怎,點(diǎn)擊哪個(gè)執(zhí)行哪個(gè):event.stopImmediatePropagation()
  • 綁定當(dāng)前事件的元素:event.currentTarget(事件代理時(shí)候會(huì)用)
  • 當(dāng)前被點(diǎn)擊的元素:event.target(事件代理時(shí)候會(huì)用)
4. DOM結(jié)構(gòu)操作
  • 新增節(jié)點(diǎn)
var p = document.createElement('p')
p.innerHTML = 'new P';
var div1 = document.getElementById('div1');
div1.appendChild(p);
  • 移動(dòng)節(jié)點(diǎn)
var div1 = document.getElementById('div1');
var div2 = document.getElementById('div2');
div1.appendChild(div2);
  • 獲取父元素,獲取子元素
var div1 = document.getElementById('div1');
console.log(div1.parentNode);
console.log(div1.childNodes);
  • 刪除節(jié)點(diǎn)
var div1 = document.getElementById('div1');
div1.removeChild(div1.childNodes[1]);

問(wèn)題

1. DOM是哪種基本的數(shù)據(jù)結(jié)構(gòu)

樹(shù)型結(jié)構(gòu)

2. DOM操作常用的api有哪些
  • 獲取及修改attribute岭参、property
  • 上面說(shuō)的DOM結(jié)構(gòu)操作
    • 添加節(jié)點(diǎn)
    • 移動(dòng)節(jié)點(diǎn)
    • 刪除節(jié)點(diǎn)
    • 獲取子節(jié)點(diǎn)
    • 獲取父節(jié)點(diǎn)
3. DOM中attr和property有何區(qū)別

attribute是對(duì)html標(biāo)簽屬性的修改
property是對(duì)一個(gè)JS對(duì)象的屬性的修改

二反惕、BOM操作

1. 檢測(cè)瀏覽器類型

navigator.userAgent

2. url不同部分的拆解

在控制臺(tái)通過(guò)location去查看對(duì)象有哪些屬性
如下圖:

location.png

3. history

  • history.back()

4. screen

  • screen.width(屏幕寬度)
  • screen.height(屏幕高度)

三、事件

1. 編寫(xiě)一個(gè)通用的事件監(jiān)聽(tīng)

function bindEvent(ele, type, selector, fn) {
  // 沒(méi)有事件代理時(shí)演侯,將第三個(gè)參數(shù)賦值給fn
  if (fn == null) {
    fn = selector;
    selector = null;
  }
  ele.addEventListener(type, function (e) {
    var target = e.target;
    if (selector) {
      // 使用事件代理
      if (target.matches(selector)) {
        fn.call(target, e);
      }
    } else {
      // 不使用事件代理
      fn(e);
    }
  });
}

2. 事件冒泡

  • DOM樹(shù)型結(jié)構(gòu)
  • 事件逐層冒泡
  • 阻止事件冒泡
  • 因?yàn)橛惺录芭莩辛В杂惺录?/li>

3. 對(duì)于一個(gè)有無(wú)限下拉的圖片的操作,怎么給每個(gè)圖片綁定事件

  • 使用事件代理
  • 什么是事件代理
    就是給父元素綁定事件蚌本,子元素和父元素都會(huì)有這個(gè)事件
  • 使用代理的好處:
    • 代碼簡(jiǎn)潔
    • 減少瀏覽器內(nèi)存消耗

四、ajax及http

知識(shí)點(diǎn)

1. readyState
  • 0 -(未初始化)還沒(méi)有調(diào)用send方法
  • 1 -(載入)已經(jīng)調(diào)用send方法隘梨,正在發(fā)送
  • 2 - (載入完成)已經(jīng)發(fā)送完成程癌,send執(zhí)行完成,已經(jīng)接受到全部相應(yīng)內(nèi)容
  • 3 - (交互)正在解析響應(yīng)內(nèi)容
  • 4 - (完成)解析響應(yīng)內(nèi)容完成轴猎,客戶端可以調(diào)用了
2. status
  • 1xx - 請(qǐng)求已接收嵌莉,繼續(xù)處理
  • 2xx - 表示處理成功,如200
    • 200:客戶端請(qǐng)求成功
    • 206:客戶端發(fā)送了一個(gè)帶有Range的GET請(qǐng)求頭捻脖,服務(wù)器完成了他(video锐峭,audio)
  • 3xx - 需要重定向中鼠,瀏覽器直接跳轉(zhuǎn)
    • 301:已經(jīng)轉(zhuǎn)移到新的url
    • 302:臨時(shí)轉(zhuǎn)移到了新的url
    • 304:緩存
  • 4xx - 客戶端請(qǐng)求錯(cuò)誤,如404
    • 400:客戶端有語(yǔ)法錯(cuò)誤
    • 401:請(qǐng)求未授權(quán)(參數(shù)和方式可能錯(cuò)誤)
    • 403:資源禁止被訪問(wèn)
    • 404:資源不存在
  • 5xx - 服務(wù)端錯(cuò)誤
    • 500:服務(wù)器錯(cuò)誤
    • 503:服務(wù)器宕機(jī)或者過(guò)載
3. 跨域
  • 什么是跨域
    瀏覽器會(huì)有同源策略沿癞,域名援雇,協(xié)議,端口只要有一個(gè)不同就是跨域

    • 協(xié)議:http椎扬,https
    • 端口:http協(xié)議默認(rèn)是80惫搏,https默認(rèn)是443
  • 可以跨域的三個(gè)標(biāo)簽

    • img:(如果圖片不做防盜鏈,是可以在其他的域名下訪問(wèn))蚕涤,可以用作打點(diǎn)統(tǒng)計(jì)筐赔,統(tǒng)計(jì)的網(wǎng)站是其他域
    • link:因?yàn)椴皇芸缬蛳拗疲钥梢允褂肅DN鏈接
    • script:可以使用CDN鏈接揖铜,可以使用JSONP
4. http的特點(diǎn)
  • 簡(jiǎn)單快速
  • 靈活
  • 無(wú)連接
  • 無(wú)狀態(tài)

問(wèn)題

1. 手動(dòng)編寫(xiě)一個(gè)ajax茴丰,不依賴其他庫(kù)
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if(xhr.readyState === 4) {
    if(xhr.status === 200) {
      alert(xhr.responseText);
    }
  }
}
xhr.send(null)
2. 跨域的幾種實(shí)現(xiàn)方式
  • JSONP
  • 服務(wù)端設(shè)置頭信息CORS
3. POST和GET的區(qū)別
  • GET請(qǐng)求瀏覽器回退是無(wú)害的,但是POST會(huì)重新發(fā)送請(qǐng)求
  • GET產(chǎn)生的地址會(huì)被收藏天吓,但是POST不會(huì)
  • GET會(huì)被瀏覽器主動(dòng)緩存贿肩,而POST的不會(huì),需要手動(dòng)設(shè)置
  • GET請(qǐng)求只能進(jìn)行url編碼失仁,而POST支持多種編碼方式
  • GET請(qǐng)求的參數(shù)會(huì)被完整保留到歷史記錄里尸曼,POST參數(shù)不會(huì)保存
  • GET請(qǐng)求在url中傳送的參數(shù)有長(zhǎng)度限制,POST沒(méi)有
  • 對(duì)參數(shù)的數(shù)據(jù)類型萄焦,GET只接受ASCII字符控轿,POST沒(méi)有限制
  • GET參數(shù)會(huì)暴露在url中,不要放敏感信息
  • GET參數(shù)通過(guò)url傳遞拂封,POST通過(guò)request body中

五茬射、存儲(chǔ)

描述一下cookie,localStorage冒签,sessionStorage的區(qū)別

  • 容量:cookie是4KB在抛,storage是5M
  • API不同:cookie需要自己封裝,但是storage不需要萧恕,有現(xiàn)成的api
  • cookie可以用于客戶端和服務(wù)端交互
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刚梭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子票唆,更是在濱河造成了極大的恐慌朴读,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件走趋,死亡現(xiàn)場(chǎng)離奇詭異衅金,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門氮唯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鉴吹,“玉大人,你說(shuō)我怎么就攤上這事惩琉《估” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵琳水,是天一觀的道長(zhǎng)肆糕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)在孝,這世上最難降的妖魔是什么诚啃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮私沮,結(jié)果婚禮上始赎,老公的妹妹穿的比我還像新娘。我一直安慰自己仔燕,他們只是感情好造垛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著晰搀,像睡著了一般五辽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上外恕,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天杆逗,我揣著相機(jī)與錄音,去河邊找鬼鳞疲。 笑死罪郊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尚洽。 我是一名探鬼主播悔橄,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腺毫!你這毒婦竟也來(lái)了癣疟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤潮酒,失蹤者是張志新(化名)和其女友劉穎睛挚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體澈灼,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叁熔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片委乌。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖荣回,靈堂內(nèi)的尸體忽然破棺而出遭贸,到底是詐尸還是另有隱情,我是刑警寧澤心软,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布壕吹,位于F島的核電站,受9級(jí)特大地震影響删铃,放射性物質(zhì)發(fā)生泄漏耳贬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一猎唁、第九天 我趴在偏房一處隱蔽的房頂上張望咒劲。 院中可真熱鬧,春花似錦诫隅、人聲如沸腐魂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛔屹。三九已至,卻和暖如春豁生,著一層夾襖步出監(jiān)牢的瞬間兔毒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工沛硅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眼刃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓摇肌,卻偏偏與公主長(zhǎng)得像擂红,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子围小,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined昵骤、Nul...
    伯納烏的追風(fēng)少年閱讀 25,806評(píng)論 2 46
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的变秦。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評(píng)論 1 11
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined框舔、Nul...
    極樂(lè)君閱讀 5,514評(píng)論 0 106
  • 【轉(zhuǎn)載】CSDN - 張林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牘閱讀 3,488評(píng)論 1 14
  • 以Sumunity集團(tuán)主導(dǎo)研發(fā)的比特直播APP今天正式上線蹦玫,內(nèi)容鮮活生動(dòng)赎婚,勁爆有料,下載方便快捷樱溉,特邀大家下載觀賞...
    陽(yáng)光16號(hào)閱讀 264評(píng)論 0 0