面試題中出現(xiàn)的題目

HTML

1. 常用的瀏覽器內(nèi)核

IE(Trident);
Chrome/Safari(Webkit);
Firefox/Mozilla(Gecko);
Opera(Presto);

2. 對(duì)瀏覽器內(nèi)核的理解

瀏覽器的內(nèi)核主要分成兩個(gè)部分:渲染引擎和JS引擎。
渲染引擎:負(fù)責(zé)取得網(wǎng)頁(yè)內(nèi)容(HTML、XML胯府、圖像等等)罩句、整理訊息(例如加入CSS等),以及計(jì)算網(wǎng)頁(yè)的顯示方式帐姻,然後會(huì)輸出至顯示器或打印機(jī)。
瀏覽器內(nèi)核的不同導(dǎo)致了對(duì)網(wǎng)頁(yè)的語(yǔ)法解釋會(huì)有不同,所以渲染的效果也不相同蔚舀。所有網(wǎng)頁(yè)瀏覽器、電子郵件客戶端以及其他需要編輯锨络、顯示的網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核赌躺。

2. Doctype作用?標(biāo)準(zhǔn)模式和兼容模式各有什麼區(qū)別羡儿?如何觸發(fā)礼患?

(1) <!DOCTYPE>告知瀏覽器的解析器用什麼文檔標(biāo)準(zhǔn)解析這個(gè)文檔。DOCTYPE不存在或格式不正確會(huì)導(dǎo)致文檔以兼容模式呈現(xiàn)掠归。
(2) 標(biāo)準(zhǔn)模式的排版和JS運(yùn)作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行缅叠。在兼容模式中,頁(yè)面以寬鬆的向後兼容的方式顯示虏冻,模擬老式瀏覽器的行爲(wèi)以防止站點(diǎn)無(wú)法工作肤粱。
(3)

/*HTML4.01嚴(yán)格模式*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//en" "http://www.w3. org/TR/html4/strict.dtd">
/*XHTML 1.0嚴(yán)格模式*/
<!DOCTYPE html PUBLIC "-//W3C//DTD *XHTML 1.0* Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4.瀏覽器標(biāo)準(zhǔn)模式和怪異模式之間的區(qū)別是什麼?

由於歷史原因厨相,不同瀏覽器對(duì)頁(yè)面的渲染是不同的领曼,甚至同一瀏覽器的不同版本也是不一樣的鸥鹉。在W3C標(biāo)準(zhǔn)出臺(tái)之前,不同瀏覽器在頁(yè)面的渲染上沒(méi)有統(tǒng)一的規(guī)範(fàn)庶骄,產(chǎn)生了差異毁渗,即Quirks mode(怪異模式或兼容模式)。當(dāng)W3C標(biāo)準(zhǔn)出臺(tái)之後单刁,不同瀏覽器對(duì)頁(yè)面渲染有了統(tǒng)一的標(biāo)準(zhǔn)灸异,即Strict mode(標(biāo)準(zhǔn)模式或嚴(yán)格模式)。
在W3C標(biāo)準(zhǔn)推出前羔飞,舊的頁(yè)面都是根據(jù)舊的渲染方式對(duì)頁(yè)面進(jìn)行渲染的肺樟,因此在W3C標(biāo)準(zhǔn)推出后為了保證舊頁(yè)面的正常顯示,保持瀏覽器的兼容性逻淌,這樣瀏覽器上就產(chǎn)生了能夠兼容W3C標(biāo)準(zhǔn)渲染的嚴(yán)格模式和保證舊頁(yè)面顯示的怪異模式或標(biāo)準(zhǔn)兼容模式儡嘶。

在標(biāo)準(zhǔn)模式中,瀏覽器根據(jù)規(guī)範(fàn)呈現(xiàn)頁(yè)面恍风;在混雜模式中蹦狂,頁(yè)面以一種比較寬鬆的向後兼容的方式顯示。
如果XHTML文檔包含形式完整的DOCTYPE朋贬,那麼它一般以標(biāo)準(zhǔn)模式呈現(xiàn)凯楔。對(duì)於HTML4.01文檔,包含嚴(yán)格DTD的DOCTYPE常常導(dǎo)致頁(yè)面以標(biāo)準(zhǔn)模式呈現(xiàn)锦募。包含過(guò)渡DTD和URI的DOCTYPE也導(dǎo)致頁(yè)面以標(biāo)準(zhǔn)模式呈現(xiàn)摆屯,但是有過(guò)渡DTD而沒(méi)有URI會(huì)導(dǎo)致頁(yè)面以混雜模式呈現(xiàn)。DOCTYPE不存在或形式不正確會(huì)導(dǎo)致HTML和XHTML文檔以混雜模式呈現(xiàn)糠亩。

區(qū)別在於:
在嚴(yán)格模式中:width是內(nèi)容的寬度虐骑,元素真正的寬度 = magin-left + border-left-width + padding-left + width +padding-right + border-right-width + margin-right;
在怪異模式中:width則是元素的實(shí)際寬度赎线,內(nèi)容寬度 = width - (padding-left + padding-right + border-left+width + border-right-width)廷没;

5.DOCTYPE有多少種類型?

該標(biāo)籤可聲明三種DTD類型垂寥,分別表示嚴(yán)格版本颠黎、過(guò)渡版本以及基於框架的HTML文檔。
HTML 4.01規(guī)定了三種文檔類型:Strict滞项、Transitional狭归、Frameset;
XHTML 1.0規(guī)定了三種XML文檔類型:Strict文判、Transitional过椎、Frameset;

6. HTML5爲(wèi)什麼只需要寫<!DOCTYPE HTML>

因爲(wèi)HTML5不基於SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)戏仓,因此不需要對(duì)DTD(Document Type Definition 文檔類型定義)進(jìn)行引用疚宇,但是需要對(duì)DOCTYPE來(lái)規(guī)範(fàn)瀏覽器的行爲(wèi)竞惋。
而HTML4.01基於SGML,所以需要對(duì)DTD進(jìn)行引用灰嫉,才能告知瀏覽器文檔所使用的文檔類型。

7. 使用XHTML的局限有哪些嗓奢?

XHTML與HTML的區(qū)別為:

  • XHTML元素必須被正確地嵌套讼撒;
  • XHTML元素必須被關(guān)閉;
  • XHTML標(biāo)籤名必須用小寫字母股耽;
  • XHTML文檔必須擁有根元素根盒;
  • XHTML文檔要求給所有屬性賦一個(gè)值;
  • XHTML要求所有的屬性必須用引號(hào)""括起來(lái)物蝙;
  • XHTML文檔要求要把所有<炎滞、>&等特殊符號(hào)用編碼表示诬乞;
  • XHTML文檔不要在注釋中使用“--”册赛;
  • XHTML圖片必須有說(shuō)明文字;
  • XHTML文檔中用id屬性代替name屬性震嫉;

局限:
所有的XHTML元素都必須被正確地嵌套森瘪,XHTML必須擁有良好的結(jié)構(gòu),所有的標(biāo)籤必須小寫票堵,並且所有的XHTML元素必須被關(guān)閉扼睬,所有的XHTML文檔必須擁有DOCTYPE聲明,並且html悴势、head窗宇、title和body元素必須存在。雖然代碼更加優(yōu)雅特纤,但缺少容錯(cuò)性军俊,不利於快速開(kāi)發(fā)。

8.cookies捧存,sessionStorage和localStorage有什麼區(qū)別蝇完?
特性 cookie sessionStorage localStorage
數(shù)據(jù)生命期 生成時(shí)就會(huì)被制定一個(gè)maxAge值,這就是cookie對(duì)的生存週期矗蕊,在這個(gè)週期內(nèi)cookie有效短蜕,默認(rèn)關(guān)係瀏覽器失效 頁(yè)面會(huì)話期間可用 除非數(shù)據(jù)被清除,否則一直存在
存放數(shù)據(jù)大小 4K左右(因?yàn)槊看蜨TTP請(qǐng)求都會(huì)攜帶cookie) 一般5M或更大
與服務(wù)器通信 由對(duì)服務(wù)器的請(qǐng)求來(lái)傳遞傻咖,都會(huì)攜帶在HTTP頭中朋魔,如果使用cookie保存過(guò)多數(shù)據(jù)將會(huì)帶來(lái)性能問(wèn)題 數(shù)據(jù)不是由每個(gè)服務(wù)器請(qǐng)求傳遞的,而是只有在請(qǐng)求時(shí)使用數(shù)據(jù)卿操,不參與和服務(wù)器的通信
易用性 cookie需要自己封裝setCookie警检、getCookie 可以用原生接口孙援,也可再次封裝對(duì)Object和Array有更好的支持
共同點(diǎn) 都是保存在瀏覽器端,與服務(wù)器端的session機(jī)制不同

CSS

1. 行內(nèi)元素和塊級(jí)元素的區(qū)別扇雕?兼容性使用拓售?

行內(nèi)元素:
(1) 水平方向排列;
(2) 不能包含塊級(jí)元素;
(3) 設(shè)置width/height/margin/padding無(wú)效;
塊級(jí)元素:
(1) 各占據(jù)一行;
(2) 垂直方向排列;
(3) 從新行開(kāi)始結(jié)束接著一個(gè)斷行;

2. 清除浮動(dòng)的方式
.clearfix:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}
.clearfix {
    display: inline-block;
}
.clearfix {
    overflow: auto;
    zoom: 1;
}
3. box-sizing常用屬性有哪些?

設(shè)置或檢索對(duì)象的盒模型組成模式镶奉。
box-sizing:content-box; 寬度和高度分別對(duì)應(yīng)到元素的內(nèi)容框础淤。在寬度和高度之外繪製元素的內(nèi)邊距和邊框(默認(rèn));
box-sizing:border-box; 元素制定的任何內(nèi)邊距和邊框都將在已設(shè)定的寬度和高度內(nèi)進(jìn)行繪製。通過(guò)從已設(shè)定的寬度和高度分別減去邊框和內(nèi)邊距才能得到內(nèi)容的寬度和高度哨苛。

4. 使用link和@import的區(qū)別

link:
(1) 屬於XHTML標(biāo)簽;
(2) 不僅可以加載CSS鸽凶,還能用於定義RSS、rel連接屬性等作用;
(3) 頁(yè)面加載時(shí)建峭,會(huì)被同時(shí)加載;
(4) 無(wú)兼容問(wèn)題;
@import
(1) CSS提供的玻侥,衹能用於加載CSS;
(2) 等到頁(yè)面被加載完才會(huì)加載;
(3) CSS2.1提出,IE5以上才能識(shí)別;
(4) 不利于後期修改和優(yōu)化;

5.解釋下浮動(dòng)和它的工作原理亿蒸。

關(guān)於浮動(dòng)凑兰,我們需要了解,浮動(dòng)的框可以向左或向右移動(dòng)边锁,直到它的外邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊框?yàn)橹蛊币 R胧乖馗?dòng),必須為元素設(shè)置一個(gè)寬度砚蓬。雖然浮動(dòng)元素不是文檔流之中矢门,但是它浮動(dòng)后所處的位置依然是在浮動(dòng)之前的水平方向上。由於浮動(dòng)框不在文檔的普通流中灰蛙,所以文檔的普通流中的塊框表現(xiàn)得就像浮動(dòng)框不存在一樣祟剔,下面的元素填補(bǔ)原來(lái)的位置。有些元素會(huì)在浮動(dòng)元素的下方摩梧,但是這些元素的內(nèi)容并不一定會(huì)被浮動(dòng)元素所遮蓋物延。
對(duì)內(nèi)聯(lián)元素進(jìn)行定位時(shí),這些元素會(huì)考慮浮動(dòng)元素的邊界仅父,會(huì)圍繞著浮動(dòng)元素放置叛薯,可以把浮動(dòng)元素想象成被塊元素忽略的元素,而內(nèi)聯(lián)元素會(huì)關(guān)注浮動(dòng)元素笙纤。

JavaScript

1.事件委託是什麼耗溜?

事件委託就是利用事件冒泡,只指定一個(gè)事件處理程序省容,就可以管理某一類型的所有事件抖拴。
優(yōu)點(diǎn):減少DOM操作,優(yōu)化性能腥椒,減少內(nèi)存佔(zhàn)用阿宅。

2.閉包

簡(jiǎn)單地說(shuō)候衍,閉包就是一個(gè)函數(shù)在創(chuàng)建時(shí)允許該自身函數(shù)訪問(wèn)并操作該自身函數(shù)之外的變量時(shí)所創(chuàng)建的作用域。

3.阻止事件冒泡/默認(rèn)事件

event.stopPropagation()
這是阻止事件冒泡的方法洒放,不讓事件向document上蔓延蛉鹿,但是默認(rèn)事件仍然會(huì)執(zhí)行,當(dāng)你用這個(gè)方法的時(shí)候往湿,如果是點(diǎn)擊一個(gè)鏈接妖异,這個(gè)連接仍然會(huì)被打開(kāi)。
event.preventDefault()
這是阻止默認(rèn)事件的方法煌茴,調(diào)用此方法后,鏈接不會(huì)被打開(kāi)日川,但是會(huì)發(fā)生冒泡蔓腐,冒泡會(huì)傳遞到上一層父元素。
return false
這個(gè)方法將會(huì)同時(shí)阻止事件冒泡和默認(rèn)事件龄句,鏈接不會(huì)被打開(kāi)回论,事件也不會(huì)被傳遞到上一層。

4.解釋下JavaScript中的this是如何工作的

this永遠(yuǎn)指向函數(shù)運(yùn)行時(shí)所在的對(duì)象分歇,而不是函數(shù)被創(chuàng)建時(shí)所在的對(duì)象傀蓉。
匿名函數(shù)或不處?kù)度魏螌?duì)象中的函數(shù)指向window。
如果是call职抡、apply葬燎、with,指定的this是誰(shuí)缚甩,就是誰(shuí)谱净。
普通函數(shù)調(diào)用,函數(shù)被誰(shuí)調(diào)用擅威,this就是誰(shuí)壕探。

5.call和apply的區(qū)別是什麼?

call方法:
語(yǔ)法:call(thisObj郊丛,Object)
定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法李请,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說(shuō)明:call方法可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法厉熟。call方法可以將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛蓆hisObj指定的新對(duì)象导盅。如果沒(méi)有提供thisObj參數(shù),那麼Global對(duì)象被用作thisObj揍瑟。
apply方法:
語(yǔ)法:apply(thisObj认轨,[argArray])
定義:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象月培。
說(shuō)明:如果argArray不是一個(gè)有效的數(shù)組或者不是arguments對(duì)象嘁字,那麼將導(dǎo)致一個(gè)TypeError恩急,如果沒(méi)有提供argArray和thisObj任何一個(gè)參數(shù),那麼Global對(duì)象將被用作thisObj纪蜒,並且無(wú)法被傳遞任何參數(shù)衷恭。
對(duì)於call和apply兩者在作用上是相同的,但兩者在參數(shù)上有以下區(qū)別:
對(duì)於第一個(gè)參數(shù)意義都一樣纯续,但對(duì)第二個(gè)參數(shù):apply傳入的是一個(gè)參數(shù)數(shù)組随珠,也就是將多個(gè)參數(shù)組合成為一個(gè)數(shù)組傳入,而call則作為call的參數(shù)傳入(從第二個(gè)參數(shù)開(kāi)始)猬错。如func.call(func1,var1,var2,var3)對(duì)應(yīng)的apply寫法為:func.apply(func1,[var1,var2,var3])窗看,同時(shí)使用apply的好處是可以直接將當(dāng)前函數(shù)的arguments對(duì)象作為apply的第二個(gè)參數(shù)傳入。

6.綜合題
function Foo() {
    getName = function () { alert (1); };
    return this; 
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
getName = function () { alert (4);};
function getName() { alert (5); }

// 問(wèn):
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
// 正確執(zhí)行順序:
function Foo() {
    getName = function () { alert (1); };
    return this; // this 指向window
}
var getName;
function getName() { alert (5); }
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
getName = function () { alert (4);};

// 結(jié)果
Foo.getName();            //2
getName();                //4
Foo().getName();          //1
getName();                //1
new Foo.getName();        //2     new (Foo.getName)();
new Foo().getName();      //3     (new Foo()).getName()
new new Foo().getName();  //3     new ((new Foo()).getName)();

7.實(shí)現(xiàn)函數(shù)isInteger(x)來(lái)判斷x是否是整數(shù)倦炒?

可以將x轉(zhuǎn)換成10進(jìn)制显沈,判斷和本身是不是相等即可:

function isInteger(x) { 
    return parseInt(x, 10) === x; 
}
8.寫一個(gè)少於80字符的函數(shù),判斷一個(gè)字符串是否是回文字符串

回文字符串:即字符串從前往後讀和從後往前讀字符順序是一致的逢唤。

function isPalindrome(str) {
    str = str.replace(/\W/g, '').toLowerCase();
    return (str == str.split('').reverse().join(''));
}
9.下面的代碼會(huì)輸出什麼拉讯?為什麼?
var arr1 = "john".split('');
var arr2 = arr1.reverse();
var arr3 = "jones".split('');
arr2.push(arr3);
console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1));
console.log("array 2: length=" + arr2.length + " last=" + arr2.slice(-1));

MDN 上對(duì)於 reverse() 的解釋:

Description
The reverse method transposes the elements of the calling array object in place, mutating the array, and returning a reference to the array.

也就是說(shuō)鳖藕,reverse()會(huì)改變數(shù)組本身魔慷,並且返回原數(shù)組的引用。
所以在arr2 = arr1.reverse()時(shí)著恩,arr1已經(jīng)改變了院尔。

10.解釋下面代碼的輸出
var a={},
    b={key:'b'},
    c={key:'c'};

a[b]=123;
a[c]=456;

console.log(a[b]);

// 結(jié)果
無(wú)論是a[b]或a[c],都會(huì)打印出456

原文解釋是:

The reason for this is as follows: When setting an object property, JavaScript will implicitly stringify the parameter value. In this case, since b and c are both objects, they will both be converted to “[object Object]”. As a result, a[b] anda[c] are both equivalent to a[“[object Object]”] and can be used interchangeably. Therefore, setting or referencing a[c] is precisely the same as setting or referencing a[b].

簡(jiǎn)單來(lái)說(shuō)喉誊,就是對(duì)象屬性訪問(wèn)中召边,' [ ] '中括號(hào)的訪問(wèn)方式,會(huì)做一個(gè)隱式的toString()裹驰,這時(shí)候就把b轉(zhuǎn)化為[object object]隧熙,而c也被轉(zhuǎn)化為[object object],它們的鍵值都一樣幻林,所以a[b]和a[c]的結(jié)果都是一樣的贞盯。

11.IE和標(biāo)準(zhǔn)下有哪些兼容性的寫法?

var e = e || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = e.srcElement || e.target

12.Ajax請(qǐng)求時(shí)沪饺,如何解釋Json數(shù)據(jù)

有兩個(gè)方法躏敢,eval()方法和JSON.parse(),但推薦使用JSON.parse()整葡,因?yàn)閑val()方法解析的時(shí)候不會(huì)去判斷字符串是否合法件余,而且Json對(duì)象中的JS方法也會(huì)被執(zhí)行,這是非常危險(xiǎn)的。
eval的全稱是evaluate啼器,就是求值的意思旬渠。parse字義上就是解析,從方法名稱中就能看出區(qū)別端壳。

13.DOM結(jié)構(gòu)——兩個(gè)節(jié)點(diǎn)之間可能存在哪些關(guān)係以及如何在節(jié)點(diǎn)之間任意移動(dòng)


DOM中兩個(gè)節(jié)點(diǎn)存在的關(guān)係無(wú)非三種:
(1)包含與被包含的關(guān)係

  • IE率先引入了contains()方法可檢測(cè)告丢,例如A.contains(B),即檢查節(jié)點(diǎn)B是否是節(jié)點(diǎn)A的子節(jié)點(diǎn)损谦,返回布爾值岖免。
  • DOM3級(jí)規(guī)範(fàn)引入compareDocumentPosition(),確定節(jié)點(diǎn)之間的關(guān)係照捡,返回值為一個(gè)表示關(guān)係的位掩碼的合颅湘,通過(guò)按位操作符“&”可確定關(guān)係。
    例如:節(jié)點(diǎn)A(<html>)在節(jié)點(diǎn)B(<body>)前——位掩碼為4栗精,且節(jié)點(diǎn)A包含節(jié)點(diǎn)B——位掩碼為16闯参,則返回值20,通過(guò)“!!(20&16)”這種方式即可返回一個(gè)布爾值术羔,“20&16”返回16證明節(jié)點(diǎn)A包含節(jié)點(diǎn)B(即:16)赢赊,通過(guò)!!取得16的布爾值true乙漓。
    位掩碼

    (2)父與子
    獲取父節(jié)點(diǎn):node.parentNode级历、node.parentElement,兩者的區(qū)別在於後者只能獲取元素叭披。
    兩者的區(qū)別

    (3)同輩(兄弟節(jié)點(diǎn))
    nextSibling寥殖、previousSibling
    (4)Element Travel API給DOM添加的屬性
    childElementCountfirstElementChild涩蜘、lastElementChild嚼贡、nextElementSiblingpreviousElementSibling同诫,他們與之前的方法之間的區(qū)別在於多了Element粤策,保證只返回元素節(jié)點(diǎn),而之前的方法误窖,普通的文本節(jié)點(diǎn)及注釋節(jié)點(diǎn)也會(huì)被返回叮盘。
    並且,之前的方法在非IE瀏覽器中還會(huì)把元素間的空白符當(dāng)文本節(jié)點(diǎn)返回霹俺。
    (5)children屬性(IE9以後)
    與childNodes不同的地方在於柔吼,children只包含元素子節(jié)點(diǎn)(IE8及之前的版本可能會(huì)包含注釋節(jié)點(diǎn))。
14.DOM操作——怎樣添加丙唧、移除愈魏、移動(dòng)、複製、創(chuàng)建和查找節(jié)點(diǎn)

(1)創(chuàng)建新節(jié)點(diǎn)

  • createDocumentFragment() // 創(chuàng)建一個(gè)DOM片段
  • createElement() // 創(chuàng)建一個(gè)具體的元素
  • createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)
    (2)添加培漏、移除溪厘、替換、插入
  • appendChild()
    用於向childNodes列表的末尾添加一個(gè)節(jié)點(diǎn)北苟,返回要添加的元素節(jié)點(diǎn)桩匪,appendChild()方法還可以添加已經(jīng)存在的元素,會(huì)將元素從原來(lái)的位置移到新的位置友鼻。
  • removeChild()
  • replaceChild()
  • insertBefore()
    如果不是在末尾插入節(jié)點(diǎn)傻昙,而是想要放在特定的位置上,用這個(gè)方法即可彩扔,該方法接受兩個(gè)參數(shù)妆档,第一個(gè)是要插入的節(jié)點(diǎn),第二個(gè)是參照節(jié)點(diǎn)虫碉,返回要添加的元素節(jié)點(diǎn)贾惦。
    (3)查找
  • getElementByTagName() // 通過(guò)標(biāo)籤名稱
  • getElementsByTagName() // Elements加了s,選出來(lái)是數(shù)組
  • getElementByName() // 通過(guò)元素的Name屬性的值
  • getElementsByName() // Elements加了s敦捧,選出來(lái)是數(shù)組
  • getElementByClassName() // 通過(guò)元素的類名
  • ``getElementsByClassName() // Elements加了s须板,選出來(lái)是數(shù)組,IE9以下不支持
  • getElementById() // 通過(guò)元素ID兢卵,唯一性
15.事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別

(1)關(guān)於事件
IE的事件流:事件冒泡
由事件的目標(biāo)(event.srcElement)接受事件习瑰,然後逐級(jí)向上,直到文檔節(jié)點(diǎn)document秽荤。
其他瀏覽器:事件捕獲
與事件冒泡正好相反甜奄,文檔節(jié)點(diǎn)document先監(jiān)聽(tīng)到事件,然後把事件逐級(jí)向下傳遞事件窃款,直到目標(biāo)節(jié)點(diǎn)event.target课兄。
(2)DOM事件流
DOM2級(jí)事件規(guī)範(fàn)的事件流綜合了以上兩種,把事件流分為了以下三個(gè)階段:
1.事件捕獲階段
不涉及事件目標(biāo)晨继,或者說(shuō)這個(gè)階段在目標(biāo)之前就結(jié)束了烟阐;
2.處?kù)赌繕?biāo)階段
被看做冒泡階段的一部分,所以可以在冒泡階段在目標(biāo)事件上操作事件紊扬;
3.事件冒泡階段
** 規(guī)範(fàn)和瀏覽器實(shí)現(xiàn)的差別:(1)DOM2級(jí)事件規(guī)範(fàn)的捕獲階段蜒茄,事件從文檔節(jié)點(diǎn)document開(kāi)始傳播,現(xiàn)代瀏覽器大多數(shù)都是從window對(duì)象開(kāi)始傳播事件珠月。(2)DOM2級(jí)事件規(guī)範(fàn)捕獲階段不涉及事件目標(biāo)扩淀,現(xiàn)代瀏覽器大多數(shù)在這個(gè)階段包含事件目標(biāo)。

16.XMLHttpRequest——這是什麼啤挎、怎樣完整地執(zhí)行一次GET請(qǐng)求驻谆、怎樣檢測(cè)錯(cuò)誤

https://segmentfault.com/a/1190000004322487

17.JSON——它是什麼卵凑、為什麼應(yīng)該使用它、到底該怎麼使用它胜臊,說(shuō)出實(shí)現(xiàn)細(xì)節(jié)來(lái)

是一種輕量級(jí)的數(shù)據(jù)交換格式勺卢,易於人的閱讀和編寫,同時(shí)也易於機(jī)器解析和生成象对。
JSON建構(gòu)于兩種結(jié)構(gòu):

  • “名稱/值”對(duì)的集合(A collection of name/value pairs)黑忱。不同語(yǔ)言中,它被理解為對(duì)象(object)勒魔、記錄(record)甫煞、結(jié)構(gòu)(struct)、字典(dictionary)冠绢、哈希表(hash table)抚吠、有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組(associative array)弟胀。
  • 值得有序列表(An ordered list of values)楷力。在大部分語(yǔ)言中,它被理解為數(shù)組(array)孵户。

以上是自己平時(shí)記不住的題目萧朝,存下來(lái)多看幾遍。
待補(bǔ)充.....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末夏哭,一起剝皮案震驚了整個(gè)濱河市检柬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌方庭,老刑警劉巖厕吉,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酱固,死亡現(xiàn)場(chǎng)離奇詭異械念,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)运悲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門龄减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人班眯,你說(shuō)我怎么就攤上這事希停。” “怎么了署隘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵宠能,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我磁餐,道長(zhǎng)违崇,這世上最難降的妖魔是什么阿弃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮羞延,結(jié)果婚禮上渣淳,老公的妹妹穿的比我還像新娘。我一直安慰自己伴箩,他們只是感情好入愧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嗤谚,像睡著了一般棺蛛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巩步,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天鞠值,我揣著相機(jī)與錄音,去河邊找鬼渗钉。 笑死彤恶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳄橘。 我是一名探鬼主播声离,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瘫怜!你這毒婦竟也來(lái)了术徊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲸湃,失蹤者是張志新(化名)和其女友劉穎赠涮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體暗挑,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笋除,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炸裆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃它。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烹看,靈堂內(nèi)的尸體忽然破棺而出憎夷,到底是詐尸還是另有隱情丐重,我是刑警寧澤腊状,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布纳本,位于F島的核電站,受9級(jí)特大地震影響土思,放射性物質(zhì)發(fā)生泄漏务热。R本人自食惡果不足惜毕源,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陕习。 院中可真熱鬧霎褐,春花似錦、人聲如沸该镣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)损合。三九已至省艳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫁审,已是汗流浹背跋炕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留律适,地道東北人辐烂。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捂贿,于是被迫代替她去往敵國(guó)和親纠修。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 為何叫做 shell 厂僧? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系扣草?...
    Zero___閱讀 3,139評(píng)論 3 49
  • Markdown 文件 NOTE: This is Traditional Chinese Edition Doc...
    onetao閱讀 336評(píng)論 0 0
  • 2017.8.24晴 今是特種兵的第二十天了,真的時(shí)間過(guò)的好快啊颜屠,21天的課馬上就結(jié)束了辰妙,看到自己的成長(zhǎng)與蛻變,看...
    明珠王蕾閱讀 204評(píng)論 0 0
  • 早上五六點(diǎn)就起床了甫窟,開(kāi)始畫(huà)彩鉛畫(huà)密浑,前五幅畫(huà)畫(huà)了大慨兩個(gè)小時(shí)多,畫(huà)完還算滿意蕴坪,后來(lái)一琢磨肴掷,按照這個(gè)速度敬锐,恐怕...
    霜雪霏霏閱讀 331評(píng)論 1 1
  • 整個(gè)世界瞬間垮掉的感覺(jué)背传,第一次承受。 我想好好大哭一場(chǎng)台夺,就此解放径玖。那些曾經(jīng)痛苦的記憶,為什么還揮之不去颤介。為什么我還...
    萌萌熊的腳丫子閱讀 293評(píng)論 2 0