1、說說你對(duì)作用域鏈的理解
作用域鏈的作用是保證執(zhí)行環(huán)境里有權(quán)訪問的變量和函數(shù)是有序的,作用域鏈的變量只能向上訪問,變量訪問到 window 對(duì)象即被終止,作用域鏈向下訪問變量是不被允許的晴玖。
2、創(chuàng)建ajax過程
(1)創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象.
(2)創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法为流、URL及驗(yàn)證信息.
(3)設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù).
(4)發(fā)送HTTP請(qǐng)求.
(5)獲取異步調(diào)用返回的數(shù)據(jù).
(6)使用JavaScript和DOM實(shí)現(xiàn)局部刷新.
3呕屎、漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)
漸進(jìn)增強(qiáng) :針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁(yè)面,保證最基本的功能敬察,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果秀睛、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。
優(yōu)雅降級(jí) :一開始就構(gòu)建完整的功能莲祸,然后再針對(duì)低版本瀏覽器進(jìn)行兼容蹂安。
4、Javascript垃圾回收方法
標(biāo)記清除(mark and sweep)
這是JavaScript最常見的垃圾回收方式锐帜,當(dāng)變量進(jìn)入執(zhí)行環(huán)境的時(shí)候田盈,比如函數(shù)中聲明一個(gè)變量,垃圾回收器將其標(biāo)記為“進(jìn)入環(huán)境”缴阎,當(dāng)變量離開環(huán)境的時(shí)候(函數(shù)執(zhí)行結(jié)束)將其標(biāo)記為“離開環(huán)境”允瞧。
垃圾回收器會(huì)在運(yùn)行的時(shí)候給存儲(chǔ)在內(nèi)存中的所有變量加上標(biāo)記,然后去掉環(huán)境中的變量以及被環(huán)境中變量所引用的變量(閉包)蛮拔,在這些完成之后仍存在標(biāo)記的就是要?jiǎng)h除的變量了
引用計(jì)數(shù)(reference counting)
在低版本IE中經(jīng)常會(huì)出現(xiàn)內(nèi)存泄露述暂,很多時(shí)候就是因?yàn)槠洳捎靡糜?jì)數(shù)方式進(jìn)行垃圾回收。引用計(jì)數(shù)的策略是跟蹤記錄每個(gè)值被使用的次數(shù)建炫,當(dāng)聲明了一個(gè) 變量并將一個(gè)引用類型賦值給該變量的時(shí)候這個(gè)值的引用次數(shù)就加1畦韭,如果該變量的值變成了另外一個(gè),則這個(gè)值得引用次數(shù)減1肛跌,當(dāng)這個(gè)值的引用次數(shù)變?yōu)?的時(shí) 候艺配,說明沒有變量在使用据过,這個(gè)值沒法被訪問了,因此可以將其占用的空間回收妒挎,這樣垃圾回收器會(huì)在運(yùn)行的時(shí)候清理掉引用次數(shù)為0的值占用的空間。
在IE中雖然 JavaScript 對(duì)象通過標(biāo)記清除的方式進(jìn)行垃圾回收西饵,但BOM與DOM對(duì)象卻是通過引用計(jì)數(shù)回收垃圾的酝掩, 也就是說只要涉及 BOM 及DOM就會(huì)出現(xiàn)循環(huán)引用問題。
5眷柔、es6的了解
新增模板字符串(為JavaScript提供了簡(jiǎn)單的字符串插值功能)期虾、箭頭函數(shù)(操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值 Inputs=>outputs 驯嘱。)镶苞、 for-of (用來(lái)遍歷數(shù)據(jù)—例如數(shù)組中的值。) arguments 對(duì)象可被不定參數(shù)和默認(rèn)參數(shù)完美代替鞠评。 ES6 將 promise 對(duì)象納入規(guī)范茂蚓,提供了原生的 Promise 對(duì)象。增加了 let 和 const 命令剃幌,用來(lái)聲明變量聋涨。增加了塊級(jí)作用域。let命令實(shí)際上就增加了塊級(jí)作用域负乡。ES6規(guī)定牍白, var 命令和 function 命令聲明的全局變量,屬于全局對(duì)象的屬性抖棘; let 命令茂腥、 const 命令、 class 命令聲明的全局變量切省,不屬于全局對(duì)象的屬性最岗。。還有就是引入 module 模塊的概念
6数尿、js繼承方式及其優(yōu)缺點(diǎn)
原型鏈繼承的缺點(diǎn)
一是字面量重寫原型會(huì)中斷關(guān)系仑性,使用引用類型的原型,并且子類型還無(wú)法給超類型傳遞參數(shù)右蹦。
借用構(gòu)造函數(shù)(類式繼承)
借用構(gòu)造函數(shù)雖然解決了剛才兩種問題诊杆,但沒有原型,則復(fù)用無(wú)從談起何陆。所以我們需要原型鏈+借用構(gòu)造函數(shù)的模式晨汹,這種模式稱為組合繼承
組合式繼承
組合式繼承是比較常用的一種繼承方法,其背后的思路是 使用原型鏈實(shí)現(xiàn)對(duì)原型屬性和方法的繼承贷盲,而通過借用構(gòu)造函數(shù)來(lái)實(shí)現(xiàn)對(duì)實(shí)例屬性的繼承淘这。這樣剥扣,既通過在原型上定義方法實(shí)現(xiàn)了函數(shù)復(fù)用,又保證每個(gè)實(shí)例都有它自己的屬性铝穷。
7钠怯、jquery和javascript中網(wǎng)頁(yè)常用計(jì)算寬高的方法
jquery:
獲取瀏覽器顯示區(qū)域的高度 : $(window).height();
獲取瀏覽器顯示區(qū)域的寬度 :$(window).width();
獲取頁(yè)面的文檔高度 :$(document).height();
獲取頁(yè)面的文檔寬度 :$(document).width();
獲取滾動(dòng)條到頂部的垂直高度 :$(document).scrollTop();
獲取滾動(dòng)條到左邊的垂直寬度 :$(document).scrollLeft();
javascript:
網(wǎng)頁(yè)可見區(qū)域?qū)挘?document.body.clientWidth
網(wǎng)頁(yè)可見區(qū)域高: document.body.clientHeight
網(wǎng)頁(yè)可見區(qū)域?qū)挘?document.body.offsetWidth (包括邊線的寬)
網(wǎng)頁(yè)可見區(qū)域高: document.body.offsetHeight (包括邊線的高)
網(wǎng)頁(yè)正文全文寬: document.body.scrollWidth
網(wǎng)頁(yè)正文全文高: document.body.scrollHeight
網(wǎng)頁(yè)被卷去的高: document.body.scrollTop
網(wǎng)頁(yè)被卷去的左: document.body.scrollLeft
網(wǎng)頁(yè)正文部分上: window.screenTop
網(wǎng)頁(yè)正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的寬: window.screen.width
屏幕可用工作區(qū)高度: window.screen.availHeight
屏幕可用工作區(qū)寬度: window.screen.availWidth