經(jīng)典面試題
25.請(qǐng)描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?
cookie是網(wǎng)站為了標(biāo)示用戶身份而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)厕倍。
cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要)歌逢,即會(huì)在瀏覽器和服務(wù)器間來回傳遞脂崔。
sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器成艘,僅在本地保存。
-
存儲(chǔ)大卸叩怠:
- cookie數(shù)據(jù)大小不能超過4k蔽挠。
- sessionStorage和localStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多瓜浸,可以達(dá)到5M或更大澳淑。
-
有效時(shí)間:
- localStorage 存儲(chǔ)持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動(dòng)刪除數(shù)據(jù)插佛;
- sessionStorage 數(shù)據(jù)在當(dāng)前瀏覽器窗口關(guān)閉后自動(dòng)刪除杠巡。
- cookie 設(shè)置的cookie過期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉
26.談?wù)凾his對(duì)象的理解雇寇。
- this總是指向函數(shù)的直接調(diào)用者(而非間接調(diào)用者)氢拥;
- 如果有new關(guān)鍵字蚌铜,this指向new出來的那個(gè)對(duì)象;
- 在事件中嫩海,this指向觸發(fā)這個(gè)事件的對(duì)象冬殃,特殊的是,IE中的attachEvent中的this總是指向全局對(duì)象Window叁怪;
27.談一談JavaScript作用域鏈?
- 全局函數(shù)無法查看局部函數(shù)的內(nèi)部細(xì)節(jié)审葬,但局部函數(shù)可以查看其上層的函數(shù)細(xì)節(jié),直至全局細(xì)節(jié)奕谭。
- 當(dāng)需要從局部函數(shù)查找某一屬性或方法時(shí)涣觉,如果當(dāng)前作用域沒有找到,就會(huì)上溯到上層作用域查找血柳,直至全局函數(shù)官册,這種組織形式就是作用域鏈。
28.如何理解JavaScript原型鏈?
- 每個(gè)對(duì)象都會(huì)在其內(nèi)部初始化一個(gè)屬性难捌,就是prototype(原型)攀隔,當(dāng)我們?cè)L問一個(gè)對(duì)象的屬性時(shí),如果這個(gè)對(duì)象內(nèi)部不存在這個(gè)屬性栖榨,那么他就會(huì)去prototype里找這個(gè)屬性,這個(gè)prototype又會(huì)有自己的prototype(指向object)明刷,是就這樣一直找下去婴栽,也就是我們平時(shí)所說的原型鏈的概念。-
- 特點(diǎn)
- JavaScript對(duì)象是通過引用來傳遞的辈末,我們創(chuàng)建的每個(gè)新對(duì)象實(shí)體中并沒有一份屬于自己的原型副本愚争。當(dāng)我們修改原型時(shí),與之相關(guān)的對(duì)象也會(huì)繼承這一改變挤聘。
- 當(dāng)我們需要一個(gè)屬性的時(shí)轰枝,Javascript引擎會(huì)先看當(dāng)前對(duì)象中是否有這個(gè)屬性, 如果沒有的話组去,就會(huì)查找他的Prototype對(duì)象是否有這個(gè)屬性鞍陨,如此遞推下去,一直檢索到 Object 內(nèi)建對(duì)象从隆。