web前端面試題-javascript(一)

以下題目都是在面試過程中整理的 答案不是標(biāo)準(zhǔn)炸庞。如有雷同純屬耦合腌乡,可與博主及時(shí)聯(lián)系!

1醉途、常用h5標(biāo)簽以及 h5的優(yōu)勢(shì)以及 兼容性問題處理


常用:

--新增input類型 search url email? tel? range number color date time dataTime

--web存儲(chǔ)(localStorage sessionStorage)

--表單元素dataList

--表單屬性 autocomplete? autofocus? placeholder? requried

--新增h5標(biāo)簽 artical aside details footer header? video audio

優(yōu)勢(shì):

--Video radio減少對(duì)外部插件的需求(比如 Flash)

--改善用戶體驗(yàn)洒缀,比如input里的email url在手機(jī)頁(yè)面里調(diào)取鍵盤時(shí)候,

--相對(duì)于傳統(tǒng)表單類型提供了新的驗(yàn)證方式:js中提供的是 郵箱驗(yàn)證checkValidity()锌历;css中提供了 input:valid / input:invalid

--對(duì)本地離線存儲(chǔ)的更好的支持

--H5完美兼容移動(dòng)端設(shè)備

兼容性問題:

--ie6-8不兼容h5標(biāo)簽: 我們可以引入google的html5.js文件

--移動(dòng)端click會(huì)產(chǎn)生200-300ms的延遲:引入fastclic.js 或者使用zepto的touch事件

--在移動(dòng)端用position:fixed定位時(shí)候如果有定位里要調(diào)取鍵盤,位置會(huì)跑偏:不使用 position:fixed 用iscroll

--1像素邊框的問題

2峦筒、解釋一下mvc和mvvm模式究西?


MVC: 模型-視圖-控制器(Model-View-Controller)(Model:模型,數(shù)據(jù)的擁有者勘天;view:用戶界面怔揩;controller:負(fù)責(zé)將view中用戶的動(dòng)作傳達(dá)給model捉邢,將model的數(shù)據(jù)通過view展現(xiàn)出來;)mvc是單向數(shù)據(jù)通信model和view永遠(yuǎn)不能相互通信商膊,只能通過controller傳遞伏伐;controller可以直接讀寫調(diào)用model,model通過notification 和 kvo機(jī)制與controller間接通信晕拆;controller可以直接與view對(duì)話藐翎,通過outlet直接操作view,view通過action向controller報(bào)告事件的發(fā)生实幕,controller是view的直接數(shù)據(jù)源(數(shù)據(jù)很可能是controller從model中取得并經(jīng)過加工了)吝镣。Controller是view的代理(delegate),以同步view和controller

? MVVM:model--view--viewModel? 模型-視圖-視圖模型? 是mvc的增強(qiáng)版昆庇,vue.js? angularjs 都是mvvm框架

【模型】是指后端傳遞的數(shù)據(jù)末贾,用純javascript對(duì)象表示;【視圖】指的是所看到的頁(yè)面;【視圖模型】是mvvm模式的核心 是連接view 和model的橋梁。

ViewModel有兩個(gè)方向:一是將模型轉(zhuǎn)化成視圖整吆,即將后端傳遞的數(shù)據(jù)轉(zhuǎn)化成所看到的頁(yè)面拱撵。實(shí)現(xiàn)方式:數(shù)據(jù)綁定;二是將視圖轉(zhuǎn)化成模型,即將所看到的頁(yè)面轉(zhuǎn)化成后端數(shù)據(jù)表蝙。實(shí)現(xiàn)方式:DOM事件監(jiān)聽主要是監(jiān)聽表單元素

這兩個(gè)方向都實(shí)現(xiàn)的拴测,我們稱之為數(shù)據(jù)的雙向綁定。

總結(jié):在mvvm的框架下視圖和模型是不能直接通信的府蛇。它們通過viewModel來通信集索,viewModel通常要實(shí)現(xiàn)一個(gè)observer觀察者,當(dāng)數(shù)據(jù)發(fā)生變化汇跨,viewModel能夠監(jiān)聽到數(shù)據(jù)的變化务荆,然后通知到對(duì)應(yīng)的視圖做自動(dòng)跟新(單向綁定);而當(dāng)用戶操作視圖扰法,viewModel也能監(jiān)聽到視圖的變化蛹含,然后通知數(shù)據(jù)做改動(dòng),這樣就實(shí)現(xiàn)了數(shù)據(jù)的雙向綁定塞颁。

并且mvvm中的view和viewModel可以相互通信

Vue就是基于mvvm模式實(shí)現(xiàn)的一套框架浦箱,在vue中:Model:指的是js中的數(shù)據(jù),如對(duì)象祠锣,數(shù)組等;View:指的是頁(yè)面視圖;ViewModel:指的是vue實(shí)例化對(duì)象

3酷窥、都用過哪些css3屬性?


--Border-radius伴网、box-show陰影蓬推、background-size、text-shadow文本陰影澡腾、word-wrap自動(dòng)換行沸伏、text-wrap:none不允許換行糕珊、text-overflow:clip 文本溢出修剪文本、@font-face

--2D轉(zhuǎn)換:transform(移動(dòng):translate毅糟、旋轉(zhuǎn):rotate红选、縮放:scale、翻轉(zhuǎn):skew())

--過渡:transition? div{transition:all 2s ease 0 2s} 應(yīng)用過渡的屬性名姆另、過渡花的時(shí)間喇肋、曲線、延遲(前兩項(xiàng)必填)

--動(dòng)畫 用@keyframes創(chuàng)建動(dòng)畫 用animation把動(dòng)畫綁定到某個(gè)選擇器上

? @keyframes myfirst{ from{background:red}? to{background:yellow}}

? div{animation:myfirst 2s}

--線性漸變

4迹辐、瀏覽器兼容性問題


標(biāo)簽兼容性問題:h5標(biāo)簽不兼容 頁(yè)面里引入html5.js

都處理過哪些css兼容問題蝶防?之前處理兼容到IE幾?

--垂直居中:vertical-align:middle 不起作用明吩,設(shè)置line-height:

--ie6中塊狀元素設(shè)置浮動(dòng)间学,同時(shí)又設(shè)置margin時(shí),會(huì)出現(xiàn)雙倍邊距的問題?例float:left;width:100px;margin:0?100px;??

解決:?設(shè)置display:inline;把塊狀元素轉(zhuǎn)換為行內(nèi)元素

--CSS控制透明度問題:一般就直接 opacity: 0.6 ; IE就 filter: alpha(opacity=60)

但在IE6下又有問題贺喝,所以又得弄成 filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60);

或者引入DDPngMin.js

--ie6下div高度無法小于10px? 給div加overflow:hidden

--表單元素行高不一致 不對(duì)其菱鸥,給其設(shè)置float

--在a標(biāo)簽里嵌套img時(shí) 某些瀏覽器中img會(huì)有藍(lán)色邊框 ;給img加border:0或者border:none

--幾個(gè)圖片放在一起默認(rèn)有間隙 躏鱼;給圖片加float:left

--按鈕默認(rèn)大小不一致:直用a標(biāo)簽來模擬按鈕添加樣式 或者 如果按鈕是一張背景圖片可以直接給按鈕加背景圖片

--如果父元素寬度是100%;子元素各為50%殷绍,總和會(huì)超出100%:給右邊浮動(dòng)的元素添加clear:right;

--鼠標(biāo)指針cursor:hand 只有ie識(shí)別其他瀏覽器不識(shí)別:使用cursor :pointer

--如果給上邊元素設(shè)置了margin-bottom 給下邊元素設(shè)置了margin-top 瀏覽器只會(huì)識(shí)別較大的:只設(shè)置一個(gè)

--不同瀏覽器對(duì)于標(biāo)簽?zāi)J(rèn)的padding margin 差異較大 我們?cè)O(shè)置margin:0; padding:0; 來清除默認(rèn)樣式

--瀏覽器最小字體是12px染苛;如果想設(shè)置更小字體 transform scole?

--給父元素下的幾個(gè)子元素設(shè)置了display:inline-block 子元素之間會(huì)有間距,給父元素加font-size:0

5主到、原生js兼容性問題茶行?


1>、瀏覽器本身盒子模型client系列和scroll系列都需要寫兩套

document.documentElement.clientWidth||document.body.clientWidth

document.documentElement.scrollTop||document.body.scrollTop

2>登钥、獲取所有瀏覽器計(jì)算過的樣式 getComputedStyle

ie6-8不兼容(window下沒有這個(gè)屬性) 用currentStyle

window.getComputedStyle(box,null).height

box.currentStyle.height

3>畔师、通過類名獲取元素:getElementsByClassName,在ie6-8下不兼容

我們需要自己封裝一個(gè)方法兼容所有瀏覽器

4>、事件

----e=e||window.event

----e.pageX \ e.pageY? ie6-8沒有這個(gè)屬性 我們通過clientY+滾動(dòng)條卷去的高度來獲取

----事件源e.target=e.target||e.scrElement

----阻止瀏覽器的默認(rèn)行為 e.preventDefault() 在ie6-8中e.returnValue=false

? e.preventDefault?e.preventDefault():e.returnValue=false

----阻止事件冒泡傳播 e.stopPropagation

? e.stopPropagation?e.stopPropagation():e.cancelBubble=true;

5>牧牢、事件監(jiān)聽

addEventListener? ie6-8用attachEvent

box.addEventListener(‘click’,fn1,false);

Box.attachEvent(‘onclick’,fn1);

5>看锉、dom節(jié)點(diǎn)相關(guān)問題 獲取元素節(jié)點(diǎn) 以下幾個(gè)ie6-8都不支持 需要用到節(jié)點(diǎn)的去處理

nextElementSibling? ? 獲取下一個(gè)元素節(jié)點(diǎn)? nextSibling? ? ? ? ?

previousElementSibling? 獲取上一個(gè)元素節(jié)點(diǎn)? previousSibling

firstElementChild? ? ? 獲取第一個(gè)元素節(jié)點(diǎn)? firstChild

lastElementChild? ? ? 獲取最后一個(gè)元素節(jié)點(diǎn)lastChild

6、跨域有幾種方法解決塔鳍?解釋jsonp原理


1>伯铣、jsonp? (原生方式實(shí)現(xiàn)、jquery的ajax轮纫、jquery的jsonp插件)

? Jsonp實(shí)現(xiàn)原理:引入一個(gè)script文件路徑是需要調(diào)用的跨域的數(shù)據(jù)地址 將函數(shù)名傳遞給callback腔寡,文件載入成功后會(huì)執(zhí)行url中指定的函數(shù),并把我們需要的jsop數(shù)據(jù)作為參數(shù)傳遞給這個(gè)函數(shù)

? Jsonp缺點(diǎn):只支持get請(qǐng)求 不支持 post請(qǐng)求

ajax的jsonp測(cè)試

2>掌唾、Document.domain+iframe跨域:? Document.domain返回當(dāng)前文件的域名

只適用于主域相同 子域不同的框架之間的交互放前,

例如:http://www.domain.com/a.html? http://child.domain.com/b.html

3>忿磅、local.hash+iframe跨域

a欲與b跨域相互通信,通過中間頁(yè)c來實(shí)現(xiàn)凭语,三個(gè)頁(yè)面不域之間利用iframe的location.hash傳值贝乎,相同域之間直接js訪問來通信

4>、Window.name? 在一個(gè)窗口的生命周期內(nèi)叽粹,窗口雜入的所有頁(yè)面都是共享一個(gè)window.name,每個(gè)頁(yè)面對(duì)window.name都有讀寫的權(quán)限览效,window.name是持久存在一個(gè)窗口載入過的所有頁(yè)面中的

5>、H5的window.postMessage

6>虫几、跨域資源共享 CORS

7>锤灿、nginx代理跨域

8>、nodejs中間代理跨域

9>辆脸、webSocket協(xié)議跨域

注意:如果是跨域并且是post請(qǐng)求 那么我們使用 CORS 跨域資源共享但校,但是ie9以及以下支持不是很好我們用window.name來實(shí)現(xiàn)

參考文章:

https://segmentfault.com/a/1190000011145364 特別全特別好

https://www.cnblogs.com/itmacy/p/6958181.html? 還可以這里有三種

http://caibaojian.com/jquery-ajax-post-cors.html? post跨域 CORS+window.name

7、怎么做響應(yīng)式布局啡氢?


一種:流式布局法(媒體查詢):

(pc和手機(jī)公用一套時(shí):先做一版和設(shè)計(jì)稿一樣的再調(diào)其他手機(jī)的)容器和盒子的寬度一般都不寫状囱,而是用百分比;其余的樣式(字體倘是、padding亭枷、margin)都按照設(shè)計(jì)稿的一半設(shè)置;對(duì)于有些手機(jī)下不是很好看的再用media調(diào)整

一種:rem響應(yīng)式布局法(等比布局)推薦

給html設(shè)一個(gè)font-size值:100px=1rem搀崭; 完全按照設(shè)計(jì)稿的大小來做叨粘,將px換算成rem;? ? ? 用js來設(shè)置不同屏幕下的font-size值瘤睹;

8升敲、媒體查詢都可以設(shè)置哪些屬性?


Width | min-width | max-width()

Height | min-height| max-height(輸出設(shè)備渲染區(qū)域的高度 即 可視區(qū)域)

Device-width | min-device-width | max-device-width (輸出設(shè)備的寬度)

Device-height| min-device-height | max-device-height(輸出設(shè)備的高度)

Aspect-ratio | min-aspect-ratio | max-aspect-ratio (目標(biāo)顯示區(qū)域的寬高比)

eg:min-aspect-ratio:1/1

Device-Aspect-ratio | min-device-aspect-ratio | max-device-aspect-ratio(設(shè)備的寬高比)

Color|min-color|max-color:顏色

Color-index | min-color-index | max-color-index顏色索引

Monochrome|min-monochrome|max-monochrome黑白

Orientation(landscape|portrait)橫屏|豎屏

Resolution分辨率

Scan掃描

grid網(wǎng)格

媒體查詢最常用的類型:all(適合所有設(shè)備)轰传;screen(計(jì)算機(jī)屏幕)默認(rèn)

9 驴党、不同的移動(dòng)設(shè)備怎么適配?


設(shè)置meta標(biāo)簽viewport获茬;給html設(shè)一個(gè)font-size值:100px=1rem港庄;? ?完全按照設(shè)計(jì)稿的大小來做,將px換算成rem锦茁;? ?用js來設(shè)置不同屏幕下的font-size值攘轩;

10、閉包是什么码俩??jī)?yōu)勢(shì)和缺點(diǎn)各是什么度帮?什么情況下會(huì)用到閉包?


在函數(shù)執(zhí)行的時(shí)候形成一個(gè)私有作用域,保護(hù)里邊的變量不受外界干擾。外面獲取不到也修改不了

嵌套函數(shù)更能體現(xiàn)出的特性:當(dāng)一個(gè)函數(shù)返回它內(nèi)部定義的一個(gè)函數(shù)時(shí)笨篷,就產(chǎn)生了一個(gè)閉包瞳秽,閉包不但包括被返回的函數(shù),還包括這個(gè)函數(shù)的定義環(huán)境(當(dāng)一個(gè)內(nèi)部函數(shù)被其外部函數(shù)之外的變量引用時(shí)率翅,就形成了一個(gè)閉包)练俐。

閉包的用途:

一是實(shí)現(xiàn)嵌套的回調(diào)函數(shù),

二是實(shí)現(xiàn)變量的私有化:js對(duì)象沒有私有屬性冕臭,也就是對(duì)象的每個(gè)屬性都是暴露給外部的腺晾,這樣可能有安全隱患

優(yōu)勢(shì):保護(hù)了閉包里的變量不受外界干擾,它是私有的

缺點(diǎn):閉包使用不當(dāng)會(huì)造成大量?jī)?nèi)存的堆積

11辜贵、優(yōu)化網(wǎng)站性能


----減少http請(qǐng)求次數(shù)(js悯蝉、css能合并的合并、圖片能做成雪碧圖的做成雪碧圖)托慨;

----使用瀏覽器緩存(根據(jù)服務(wù)器端的響應(yīng)header鼻由,設(shè)置緩存狀態(tài);)

----使用離線緩存(把常用的變動(dòng)少的js厚棵、css蕉世、圖片存儲(chǔ)到localstorage,第二次訪問的時(shí)候直接走本地緩存婆硬,在移動(dòng)端應(yīng)用廣泛)

----使用壓縮組件:傳輸之前狠轻,先使用GZIP壓縮再傳輸給客戶端,客戶端接收之后由瀏覽器解壓

----圖片延遲加載:提高網(wǎng)頁(yè)打開的速度

----將css樣式表放在head頭部 ((將css放在頭部柿祈,防止出現(xiàn)白屏哈误,改善用戶體驗(yàn))

----將js腳本放在底部(嵌入的js放在底部,如果放在head里要放在css前邊);

將js放在底部 減少頁(yè)面加載的時(shí)間躏嚎,瀏覽器在下載js的時(shí)候會(huì)阻止其他一切活動(dòng),比如其他資源的下載菩貌,內(nèi)容的呈現(xiàn)卢佣,直到j(luò)s下載、解析箭阶、執(zhí)行完后才開始css虚茶、圖片的并行下載,因?yàn)閖s中很可能有代碼直接改變了dom樹結(jié)構(gòu)比如使用document.write或appendChild仇参,甚至是直接使用location.href進(jìn)行跳轉(zhuǎn)嘹叫,瀏覽器為了防止出現(xiàn)js修改dom樹,需要重構(gòu)dom樹诈乒,所以就會(huì)阻塞其他的下載和呈現(xiàn)罩扇;

----使用外部的css、js 可以緩存到本地 下次用戶訪問時(shí)候提高頁(yè)面加載速度;減少內(nèi)聯(lián)的css、js

----精簡(jiǎn)js:剔除不必要的注釋喂饥、空白符(換行符歪玲、tab縮進(jìn)盔然、空格),減少文件大小、提高加載速度导匣;可以使用ShrinkSafe來精簡(jiǎn)JS? http://shrinksafe.dojotoolkit.org/

----精簡(jiǎn)css:移除空白、注釋蹦锋、0px改成0甸私、顏色使用縮寫#fff、樣式最后一個(gè)的硝岗;不寫氢哮;

----避免使用濾鏡,濾鏡會(huì)增加瀏覽器內(nèi)存的開支辈讶,最好使用png圖片命浴;

可以使用CSS Compressor http://www.cssdrive.com/index.php/main/csscompressor /

----壓縮css js 圖片

----減少DOM回流和重繪:js腳本頻繁的對(duì)DOM進(jìn)行操作會(huì)導(dǎo)致頁(yè)面重繪和回流,避免使用js來修改頁(yè)面布局贱除,消耗頁(yè)面性能(例如 數(shù)據(jù)綁定時(shí)候可以用文檔碎片(createDocumentFragment)

----標(biāo)明寬度及高度(如果瀏覽器沒有找到這兩個(gè)參數(shù)生闲,它需要一邊下載圖片一邊計(jì)算大小,如果圖片很多月幌,瀏覽器需要不斷地調(diào)整頁(yè)面碍讯。這不但影響速度,也影響瀏覽體驗(yàn)扯躺。 當(dāng)瀏覽器知道了高度和寬度參數(shù)后捉兴,即使圖片暫時(shí)無法顯示,頁(yè)面上也會(huì)騰出圖片的空位录语,然后繼續(xù)加載后面的內(nèi)容倍啥。從而加載時(shí)間快了,瀏覽體驗(yàn)也更好了澎埠。)

----網(wǎng)址后面加斜杠”/”(加了斜杠會(huì)減少一次判斷過程虽缕,直接返回網(wǎng)站設(shè)置的存放在網(wǎng)站根目錄下的默認(rèn)頁(yè)面)

----精簡(jiǎn)圖片、Flash

對(duì)大圖片蒲稳、Flash氮趋,要在效果和大小之間做出平衡。

----切分組件到多個(gè)域

主要的目的是提高頁(yè)面組件并行下載能力江耀。但不要跨太多域名剩胁,建議采用2個(gè)子域名。

----使用事件代理

? 如果一個(gè)div中有10個(gè)按鈕 不需要給每個(gè)按鈕加事件綁定祥国,給div加事件綁定就可以了昵观,事件冒泡時(shí)可以捕捉到事件,并判斷是哪個(gè)事件發(fā)出的

----減少dom元素的數(shù)量

一個(gè)復(fù)雜的頁(yè)面意味著需要下載更多數(shù)據(jù),同時(shí)也意味著JavaScript遍歷DOM的效率越慢

--不要出現(xiàn)404錯(cuò)誤

--避免使用濾鏡

參考網(wǎng)址:

http://www.360doc.cn/article/5054188_179121203.html

http://www.reibang.com/p/897569276fdf

11索昂、怎樣編寫高性能的javascript


--手動(dòng)釋放沒有用的對(duì)象內(nèi)存 obj=null

--解綁那些不再需要的事件監(jiān)聽器建车,尤其是那些即將被銷毀的DOM對(duì)象所綁定的事件監(jiān)器

--減少對(duì)DOM的操作,減少dom的回流和重繪椒惨。例如:往頁(yè)面里綁定dom元素的時(shí)候可以使用createDocumentFragment一次性添加到頁(yè)面里缤至,而不是一條一條的添加

--使用惰性思想,解決每次都要進(jìn)行判斷這個(gè)問題康谆;例如:為了兼容標(biāo)準(zhǔn)瀏覽器和ie瀏覽器领斥,我們每次都需要對(duì)瀏覽器環(huán)境進(jìn)行一次判斷,用惰性思想只需判斷一次即可

--變量盡量使用局部變量沃暗,避免使用全局變量月洛,函數(shù)內(nèi)的變量函數(shù)執(zhí)行完后就會(huì)銷毀,而全局變量頁(yè)面關(guān)閉或刷新才會(huì)銷毀孽锥,而且污染全局變量

--處理瀏覽器兼容性問題的時(shí)候嚼黔,我們盡量避免使用try catch 因?yàn)椴还墚?dāng)前是瀏覽器兼不兼容都需要先把try中的代碼執(zhí)行一遍,降低了性能惜辑。我們可以判斷當(dāng)前瀏覽器中是否存在這個(gè)屬性方法唬涧,存在就兼容 不存在就不兼容,或者判斷瀏覽器版本號(hào)盛撑;常用的是第二種方法

--函數(shù)內(nèi)部不要返回一個(gè)未聲明的變量碎节,會(huì)污染外部變量,會(huì)使速度變慢

--在存儲(chǔ)數(shù)據(jù)的時(shí)候能使用數(shù)組就不使用對(duì)象抵卫,因?yàn)樽兞繉?duì)象要比遍歷數(shù)組快的多狮荔,內(nèi)存方面也高效

--使用對(duì)象時(shí)的技巧:使用一個(gè)構(gòu)造函數(shù)來創(chuàng)建對(duì)象。這將確保它創(chuàng)建的全部對(duì)象具有同樣的隱藏類介粘,并且有助于避免更改這些類殖氏,速度也快于Object.create()

--使用模塊模式緩存函數(shù),性能要優(yōu)于原型模式

--使用數(shù)組時(shí)候姻采,盡量不要?jiǎng)h除數(shù)組元素受葛,這樣改變了數(shù)組的索引和解構(gòu)性能就會(huì)變慢,可以把數(shù)組最后一項(xiàng)拿過來替換當(dāng)前項(xiàng)偎谁,再刪除數(shù)組最后一項(xiàng)

--盡量不要使用for-in循環(huán)訪問數(shù)組,建議用for循環(huán) 并且將for循環(huán)里的ary.leng保存在一個(gè)變量里纲堵,不然每次都要計(jì)算

--獲取dom對(duì)象要進(jìn)行緩存巡雨,不要每次都去獲取

參考網(wǎng)站:https://www.cnblogs.com/yjbjingcha/p/7029057.html

12、jquery中this和$(this)的區(qū)別


This表示的是javascript提供的當(dāng)前對(duì)象

$(this)表示的是用jquery封裝好的當(dāng)前對(duì)象

13席函、移動(dòng)端和pc端有什么區(qū)別铐望?


兼容性:pc要考慮的兼容性更多一些;移動(dòng)用的是webkit內(nèi)核 需要考慮的兼容性少一些,更多考慮的是不同手機(jī)分辨率的適配正蛙;

布局:移動(dòng)端要做到自適應(yīng)我們用rem布局

動(dòng)畫:pc端對(duì)于css3動(dòng)畫不兼容督弓,但在移動(dòng)端我們要做一些動(dòng)畫、特效用css3簡(jiǎn)單又高效

框架上:pc用的是jquery乒验;移動(dòng)用的是zepto愚隧,更小一些

事件:移動(dòng)端多出來的是觸屏事件,而缺少hover事件锻全,移動(dòng)端 彈出手機(jī)鍵盤的處理

操作方式:pc端使用鼠標(biāo)操作相對(duì)單一(左擊狂塘、右擊、雙擊鳄厌、滑動(dòng))交互效果少荞胡;移動(dòng)端手指操作(點(diǎn)擊、滑動(dòng)了嚎、雙擊泪漂、雙指放大、雙指縮小歪泳、五指收縮萝勤、蘋果最近的3Dtouch按壓力度、搖一搖)夹囚;

屏幕尺寸:移動(dòng)端設(shè)備大纵刘,容錯(cuò)性高一些;移動(dòng)端相對(duì)來說屏幕小荸哟,操作局限性大假哎,這樣在設(shè)計(jì)上可用的空間尤得珍貴

傳感器:移動(dòng)端的(壓力、方向鞍历、重力舵抹、GPS、NFC劣砍、 指紋識(shí)別惧蛹、3Dtouch、陀螺儀)


14刑枝、同步和異步的區(qū)別


Javascript是單線程的香嗓,單線程意味著,所有任務(wù)需要排隊(duì)装畅,前一個(gè)任務(wù)結(jié)束靠娱,才會(huì)執(zhí)行后一個(gè)任務(wù),所有任務(wù)分為兩種掠兄,一種是同步任務(wù)像云,一種是異步任務(wù)

同步:在主線程上排隊(duì)執(zhí)行的任務(wù)锌雀,只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù)迅诬;

異步:不進(jìn)入主線程而進(jìn)入“任務(wù)隊(duì)列”的任務(wù)腋逆,只有等主線程任務(wù)執(zhí)行完畢,”任務(wù)隊(duì)列“開始通知主線程請(qǐng)求執(zhí)行任務(wù)侈贷,該任務(wù)才會(huì)進(jìn)入主線程執(zhí)行

定時(shí)器惩歉、事件綁定、ajax讀取數(shù)據(jù)的時(shí)候一般都設(shè)置為異步編程铐维、回調(diào)函數(shù)


15柬泽、es6都用過哪些?


1>嫁蛇、Let變量锨并、const常量 是塊級(jí)作用域(只對(duì)當(dāng)前函數(shù)內(nèi)部、代碼塊內(nèi)容有效)即{}大括號(hào)的代碼塊就是let和const的作用域

2>睬棚、模板字符串``反引號(hào) :將表達(dá)式嵌入字符串中進(jìn)行拼接 用${}來界定:`hello ${name}`

const template=`<div> <span>nihaoaaaaa</span></div>`

3>第煮、includes 判斷是否包含 然后返回布爾值 str.includes(‘y’)

4>、repeat 獲取字符串重復(fù)n次 s.repeat(3);獲取s字符串并重復(fù)3次

5>抑党、函數(shù):為我們提供了默認(rèn)值:function action(num=300){}

? ? ? ? ? 箭頭函數(shù):不需要function 省略return 繼承上下文的this

當(dāng)你有且只有一個(gè)參數(shù)時(shí)候可以省略(),只有一個(gè)表達(dá)式時(shí)候可以省略{} [1,2,3].map(x=>x+1)

6>包警、鍵值對(duì)重名可簡(jiǎn)寫

7>、使字面量賦值更簡(jiǎn)潔:

const people={

? ? name:"liu",

? ? getName:function(){

? ? ? ? Console.log(this.name)}}

const people={

? ? name:"liu",

? ? getName(){

? ? ? ? console.log(this.name)}}

8>底靠、數(shù)組和對(duì)象不用一個(gè)一個(gè)的提群蕖:解構(gòu)

結(jié)構(gòu)

9>、導(dǎo)入import 導(dǎo)出 export

? 全部導(dǎo)入:import people from ‘./example’

? 將整個(gè)模塊當(dāng)作單一對(duì)象進(jìn)行導(dǎo)入:該模塊所有導(dǎo)出都會(huì)作為對(duì)象的屬性存在

? Import * as example from “./example.js”

Console.log(example.name)

Console.log(example.age)

Console.log(example.getName())

部分導(dǎo)入

Import {name,age} from ‘./example’

導(dǎo)出默認(rèn) 有且只有一個(gè)默認(rèn)

export default App

導(dǎo)出部分

Export class App extend Component{}

16暑中、 html語義化的理解壹瘟?


Html語義化是正確的標(biāo)簽做正確的事情;

有利于搜索引擎優(yōu)化提高網(wǎng)頁(yè)權(quán)重鳄逾;便于開發(fā)者閱讀維護(hù)提高效率稻轨;清楚的看出網(wǎng)頁(yè)結(jié)構(gòu)增強(qiáng)可讀性;

例如:p是段落雕凹;h1-h5是標(biāo)題殴俱;ul、ol是無序列表枚抵;nav是導(dǎo)航线欲;header頁(yè)眉;footer頁(yè)腳汽摹;strong強(qiáng)調(diào)询筏;em斜體

17、jquery 和zepto的區(qū)別


1>竖慧、jquery主要用于pc嫌套,zepto主要用于移動(dòng)端

2>、jquery中提供了很多選擇器類型和dom操作方法圾旨,但zepto中只是先了部分常用的選擇器和方法:eg:jq中的動(dòng)畫方法有(animate踱讨、hide、show砍的、toggle痹筛、fadeIn、fadeOut廓鞠、fadeTaggle帚稠、slideDown、slideUp床佳、slideToggle)滋早,但zepto中只有animate

3>、zepto比jq小的多

4>砌们、zepto的animate動(dòng)畫方法支持了css動(dòng)畫

5>杆麸、zepto專門準(zhǔn)備了移動(dòng)端常用的事件操作:tap(點(diǎn)擊)、singleTap(單擊)浪感、doubleTap(雙擊)昔头、longTap(長(zhǎng)按)、swipe(滑動(dòng))影兽、swipeUp揭斧、swipeDown、swipeleft峻堰、swiperight

18讹开、從地址欄輸入url后到頁(yè)面渲染說一下具體過程?能說多細(xì)就說多細(xì)(未寫完)


域名解析(首先搜索瀏覽器自身的DNS緩存茧妒,看自身緩存中有沒有對(duì)應(yīng)的域名萧吠,看有沒有過期,如果沒有 瀏覽器會(huì)找操作系統(tǒng)自身的DNS緩存桐筏,如果沒有嘗試讀取host文件)纸型;

先向DNS發(fā)送一條請(qǐng)求->找到外網(wǎng)的ip和端口號(hào)----->再通過外網(wǎng)的ip和端口號(hào)找到這臺(tái)服務(wù)器----->找到服務(wù)器對(duì)應(yīng)的端口號(hào),服務(wù)器接收到請(qǐng)求后把請(qǐng)求頁(yè)面中的源代碼返回給客戶端梅忌,瀏覽器接收到源代碼后按照w3c規(guī)范進(jìn)行解析并請(qǐng)求html頁(yè)面中的(css狰腌、js、圖片)--最后瀏覽器對(duì)頁(yè)面進(jìn)行渲染

19牧氮、什么是事件冒泡琼腔?? 什么是事件委托?


事件冒泡:從當(dāng)前觸發(fā)的事件目標(biāo)一級(jí)一級(jí)往上傳遞踱葛,依次觸發(fā)丹莲,直到document為止

事件委托:利用事件的冒泡機(jī)制光坝,將事件委托給更大范圍的DOM元素,提高了性能(我們可以給整個(gè)頁(yè)面指定一個(gè)onclick事件處理程序甥材,而不必給每個(gè)可單擊的元素分別添加事件處理程序)

20盯另、js怎樣添加、移除洲赵、移動(dòng)鸳惯、復(fù)制、創(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()

removeChild()

replaceChild()

insertBefore()

(3) 查找

getElementsByTagName()

getElementsByName()

getElementById()

(4) 移動(dòng)節(jié)點(diǎn)

? ?odiv.style.left=parseInt(odiv.style.left)+50+”px”

? ?<div id=’odiv’ style=’position:absolute;left:10px’></div>

21苛谷、您對(duì)js原型是如何理解的辅鲸?您對(duì)js繼承是如何理解的?舉例說明js的繼承


This:

This表示當(dāng)前對(duì)象抄腔;

如果在全局范圍內(nèi)使用this瓢湃,這指當(dāng)前頁(yè)面對(duì)象window;

如果在函數(shù)中使用this赫蛇,函數(shù)運(yùn)行時(shí)在什么對(duì)象上被調(diào)用绵患;

(自執(zhí)行函數(shù)中的this永遠(yuǎn)是window;給dom元素綁定方法方法執(zhí)行時(shí)里邊的this是當(dāng)前元素悟耘;方法執(zhí)行時(shí)看前邊有沒有點(diǎn) 點(diǎn)前邊是誰方法中的this就是誰落蝙;類中的this是當(dāng)前類的實(shí)例;call apply bind 對(duì)可以改變this關(guān)鍵字一旦遇到他們以前4條都沒用)

Prototype:

prototype本質(zhì)上還是一個(gè)javascript對(duì)象暂幼;每一個(gè)函數(shù)都有一個(gè)默認(rèn)的prototype屬性筏勒;如果這個(gè)函數(shù)被用在創(chuàng)建自定義對(duì)象的場(chǎng)景中,我們稱為構(gòu)造函數(shù)旺嬉。

作為類比js中的內(nèi)部的數(shù)據(jù)類型 -字符串(String)管行、數(shù)字(Number)、數(shù)組(Array)邪媳、對(duì)象(Object)捐顷、日期(Data)都是作為構(gòu)造函數(shù)來實(shí)現(xiàn)的

例如數(shù)組中的許多方法(concat、join雨效、push)都是在prototype中定義的迅涮,如果我們修改了這些類的原型,那些預(yù)定義的方法就消失了徽龟,但我們可以向其中添加自己的擴(kuò)展方法(如果用for in方法循環(huán)數(shù)組里的每一項(xiàng)的時(shí)候叮姑,擴(kuò)展的方法也會(huì)被循環(huán)出來,我們需要這樣做arr.hasOwnProperty(i) )

Constructor:

每一個(gè)函數(shù)都有一個(gè)默認(rèn)的屬性prototype据悔,而這個(gè)prototype上有一個(gè)constructor默認(rèn)指向這個(gè)函數(shù)传透;如果我們重新定義了函數(shù)的prototype耘沼,那么construction就不再指向這個(gè)函數(shù),我們可以在這個(gè)函數(shù)的原型上擴(kuò)展方法或者重新覆蓋下Person.prototype.constructor=Person;

22 旷祸、什么是原型的繼承


? 1>耕拷、原型繼承是我們js中常用的一種繼承方式;

? 2>托享、子類B想要繼承父類A中所有的屬性和方法(私有+公有)只需讓B.prototype=new A 即可

? 3>、原型繼承的特點(diǎn):它是把父類中私有+公有的都繼承到了子類的原型上(子類公有)

? 核心:原型繼承并不是把父類中的屬性和方法克隆一份一模一樣的給B浸赫,而是讓B和A之間增加了原型鏈的鏈接闰围,以后B的實(shí)例n想用A中的getx方法,需要一級(jí)一級(jí)向上查找


原型繼承實(shí)例

23既峡、數(shù)組5中迭代方法:


every():對(duì)數(shù)組中每一項(xiàng)執(zhí)行函數(shù)羡榴,如果每一項(xiàng)都返回true,則該方法返回true

some():對(duì)數(shù)組中每一項(xiàng)執(zhí)行函數(shù)运敢,只要有一項(xiàng)返回了true校仑,則該方法返回true

filter():對(duì)數(shù)組中的每一項(xiàng)執(zhí)行函數(shù),把里面返回true的項(xiàng)传惠,組成一個(gè)數(shù)組返回

forEach():對(duì)數(shù)組中的每一項(xiàng)執(zhí)行函數(shù)迄沫。沒有返回值。類似于for循環(huán)

map():對(duì)數(shù)組中的每一項(xiàng)執(zhí)行函數(shù)卦方,返回(處理后的)每一項(xiàng)

注:5種方法都不會(huì)改變數(shù)組本身羊瘩;函數(shù)都接收三個(gè)參數(shù)(數(shù)組中的每一項(xiàng)、每一項(xiàng)的索引值盼砍、數(shù)組對(duì)象本身)

var arr=[1,2,3,4,5];

var res=arr.every(function(i,index,o){ return i>2;});

console.log(res)? //false

24尘吗、類數(shù)組轉(zhuǎn)化為數(shù)組:


Array.prototype.slice.call(arguments);

25 、cookie不設(shè)置過期時(shí)間浇坐,默認(rèn)過期時(shí)間是多少睬捶?


關(guān)閉瀏覽器就結(jié)束了

26、怎樣解析后臺(tái)返回來的json格式的數(shù)據(jù)(JSON格式的字符串轉(zhuǎn)化為JSON格式的對(duì)象)


JSON 格式的字符串 var str1=’{“name”:”haorooms”,”sex”:”man”}’;

JSON 格式的對(duì)象 var str1={“name”:”haorooms”,”sex”:”man”};

JSON 格式的字符串轉(zhuǎn)化成JSON格式的對(duì)象

var obj=eval(‘(’+str+’)’);

Var obj=JSON.parse(str);

Var obj=str.parseJSON();//需要引入json.js庫(kù)

Var obj=$.parseJSON();//jquery里自帶的

JSON 格式的對(duì)象轉(zhuǎn)化成JSON格式的字符串

Var last=JSON.stringify(obj);

Var last=obj.toJSONString();//需要引入json.js庫(kù)

27近刘、網(wǎng)絡(luò)狀態(tài)碼


200或以2開頭 代碼請(qǐng)求已成功被服務(wù)器接收

3xx 系列 用來重定向的 301永久重定向擒贸、302臨時(shí)重定向、304本次讀取的內(nèi)容是讀取緩存中的數(shù)據(jù)

4xx 系列 客戶端請(qǐng)求錯(cuò)誤 400 客戶端傳遞給服務(wù)器的參數(shù)出現(xiàn)錯(cuò)誤跌宛、401無權(quán)限訪問酗宋、404客戶端訪問的地址不存在

5xx 系列? 服務(wù)器的錯(cuò)誤 500 未知的服務(wù)器錯(cuò)誤、503服務(wù)器已經(jīng)超負(fù)荷

28疆拘、用到哪些css插件


Bootstrap蜕猫、animate.css

29、http請(qǐng)求信息由哪三部分組成


請(qǐng)求方法URI協(xié)議/版本哎迄、請(qǐng)求頭回右、請(qǐng)求正文

30隆圆、清理網(wǎng)站緩存的方法


? meta方法

Jauery Ajax清除瀏覽器緩存:cache:false 或者 url參數(shù)后加隨機(jī)數(shù)或加隨機(jī)時(shí)間

31、數(shù)據(jù)類型檢測(cè)的四種方式


? 1)翔烁、 typeof 返回的是字符串 ”number” , ”boolean” , “string” , “undefined” , “function” , “object” 用途檢測(cè)參數(shù)是否傳值 或者檢測(cè)參數(shù)是不是function

? ? ? 局限性:不能區(qū)分?jǐn)?shù)組渺氧,對(duì)象、正則蹬屹,因?yàn)榉祷氐亩际恰眔bject”

2)侣背、instanceof 檢測(cè)一個(gè)實(shí)例是否屬于某個(gè)類:

? ? 局限性:只要在當(dāng)前實(shí)例的原型鏈上,我們檢測(cè)出來的結(jié)果都是true慨默;

? ? ? ? ? ? 對(duì)于基本數(shù)據(jù)類型贩耐,字面量方式無法檢測(cè),可以檢測(cè)出實(shí)例創(chuàng)建的方式厦取,只有實(shí)例方式創(chuàng)建出來的才是標(biāo)準(zhǔn)的對(duì)象數(shù)據(jù)類型值潮太,也是Number這個(gè)類的一個(gè)實(shí)例

3)、constructor構(gòu)造函數(shù) 可以檢測(cè)基本數(shù)據(jù)類型虾攻;也可以檢測(cè)出是數(shù)組铡买、正則、對(duì)象 (正好解決了instanceof第一個(gè)局限 和typeof的局限)

? ? ? 局限性:如果把類的原型重寫 覆蓋掉 檢測(cè)結(jié)果就不準(zhǔn)確了

4)霎箍、Oject.prototype.toString.call()最全的方式

? ? ? [object object] 第一個(gè)object代表當(dāng)前實(shí)例是對(duì)象數(shù)據(jù)類型奇钞,

第二個(gè)object代表的是obj所屬的類是object

? ? ? toString方法:對(duì)于Number、String朋沮、Boolean蛇券、Array、RegExp樊拓、Date纠亚、Function原型上的toString方法都是把當(dāng)前當(dāng)前類型轉(zhuǎn)換成字符串的類型

? ? ? Object.prototype.toString不是用來轉(zhuǎn)換為字符串的

eg:

var arr=["a","b","c"]

console.log(Object.prototype.toString.call(arr)==="[object Array]")? //true

32、js數(shù)組主要有哪些方法:


Shift()筋夏、unshift()蒂胞、pop()、push()条篷、concat()骗随、splice(1,5)、slice()赴叹、reverse()鸿染、sort()

Map /forEach? indexOf /lastIndexOf? ? toString把數(shù)組轉(zhuǎn)換為字符串?

join按照分割符把數(shù)組中的每一項(xiàng)拼接成一個(gè)字符串

33、左邊固定 右邊自適應(yīng)的布局


方法一:左側(cè)設(shè)置左浮動(dòng)乞巧,右邊設(shè)置100%

方法二:flex布局

方法四涨椒、左側(cè)絕對(duì)定位 右側(cè)margin-left

34、本地存儲(chǔ)的方案


1>、傳統(tǒng):

? ? ? ? Cookie:把信息存儲(chǔ)到客戶端的瀏覽器中(但是項(xiàng)目服務(wù)器端也是可以獲取到cookie的)

? ? ? ? Session:把信息存儲(chǔ)到服務(wù)器上

2>蚕冬、html5:webstorage

? ? ? ? Localstorage:永久存儲(chǔ)到客戶端的本地

? ? ? ? SessionStorage:屬于臨時(shí)的會(huì)話存儲(chǔ)免猾,信息的會(huì)話存儲(chǔ),會(huì)話窗口存在信息存在囤热,會(huì)話窗口關(guān)閉信息就消失了猎提。

Cookie和localstorage的區(qū)別:

? ? ? -----存儲(chǔ)內(nèi)容的大小

? ? ? -----兼容性:cookie兼容所有瀏覽器,localstorage不兼容ie6-8

? ? ? ----存儲(chǔ)時(shí)間限制:cookie存儲(chǔ)的內(nèi)容有時(shí)間限制旁蔼,localstorage是 永久存儲(chǔ)到本地

? ? ? -----用戶可能出于安全的角度禁用cookie(無痕瀏覽器)但是不能禁止localstorage

? ? ------應(yīng)用:cookie用于存儲(chǔ)用戶名密碼锨苏,localstorage用于存儲(chǔ)js、css源代碼

34棺聊、手機(jī)網(wǎng)站遇到的兼容性問題


1>蚓炬、網(wǎng)站的頭部或者底部使用了positon定位,如果定位區(qū)域還要調(diào)取鍵盤的話就會(huì)出現(xiàn)很多問題躺屁,因?yàn)橐苿?dòng)端瀏覽器對(duì)手機(jī)都支持不好。解決:這個(gè)問題就是不用position定位经宏,使用局部滾動(dòng)isscroll.js

2>犀暑、移動(dòng)端使用click會(huì)存在300ms延遲:瀏覽器在第一次點(diǎn)擊結(jié)束會(huì),還需要等到300ms看是否觸發(fā)第二次點(diǎn)擊烁兰,如果觸發(fā)了第二次點(diǎn)擊就與click事件了耐亏。解決:用fastclick.js或者用zepto.js的touch模塊

3>、對(duì)于非可點(diǎn)元素如(select沪斟、span)監(jiān)聽click事件广辰,ios下不會(huì)觸發(fā),css增加cursor:pointer即可

4>主之、在ios和andriod中择吊,audio、video元素?zé)o法自動(dòng)播放:給html綁定touchstarch事件

35槽奕、manifest離線存儲(chǔ) 怎么刷新几睛?


用戶清空緩存;manifest文件被修改粤攒;由程序來更新

36所森、webpack是做什么用的?


Webpack是一個(gè)模塊打包器夯接,

將多種靜態(tài)資源js焕济、css、less換成一個(gè)靜態(tài)文件盔几,減少了頁(yè)面請(qǐng)求晴弃,

Webpack本身只能處理javascript文件,如果要處理其他類型的文件,就需要使用loader進(jìn)行轉(zhuǎn)換

37肝匆、實(shí)現(xiàn)不定高度元素垂直居中的幾種方法 其中有個(gè)flex


參考網(wǎng)址:https://mobile.tangshuang.net/3197.html

方法一:

Parent{? Position:relative }

Child{ Position:absolute;Top:50%;Transform:translateY(-50%)}

方法二:flex方法

.container { display: flex; align-items: center; justify-content: center;}

<div class="container">??

<div class="inner">

? ? ? ? this is a box fixed in center of screen<br>The second line

</div>

</div>

簡(jiǎn)單解釋一下粒蜈,當(dāng)display: flex時(shí),表示該容器內(nèi)部的元素將按照flex進(jìn)行布局旗国。align-items: center表示這些元素將相對(duì)于本容器水平居中枯怖,justify-content: center也是同樣的道理垂直居中。對(duì).container賦予了這些樣式之后能曾,作為它的內(nèi)部元素.inner自己自覺的居中了度硝。而且這里你會(huì)發(fā)現(xiàn),由于沒有使用text-align: center寿冕,.inner里面的文字是不會(huì)居中的蕊程,也就是說僅僅.inner這個(gè)容器居中而已。

38驼唱、浮動(dòng)元素垂直居中:


1藻茂、(父盒子有寬高)父元素為position:relative? 子元素:position:absolute;? top:50%; left:50%;margin-left:-寬度一半

2、(父盒子沒有寬高) 父元素為position:relative? 子元素:position:absolute;? margin:auto; top:0;left:0;right:0;bottom:0

39玫恳、寫出你所知道的css選擇器


參考網(wǎng)址:https://m.baidu.com/from=1013672b/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%401320_1004%2Cta%40iphone_2_7.1_11_9.2/baiduid=FF28D2DDA660A06D0F18E70D2FBBBD3F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=6332165674989771974&order=2&fm=alop&isAtom=1&is_baidu=0&tj=www_normal_2_0_10_title&vit=osres&m=8&srd=1&cltj=cloud_title&asres=1&title=CSS%E9%80%89%E6%8B%A9%E5%99%A8%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C&dict=32&wd=&eqid=57e05f21d4afdc00100000035bf2318b&w_qd=IlPT2AEptyoA_yi7D6EouwmuJExSm7ooqjwYpePUuAG&tcplug=1&sec=34299&di=4324426a0babbe3e&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_zcHATm7ok_rxP4kHRhdXHKhVniJEFPwwiPQpsxCg6fcOjpzidYYbu6qgihf

1>辨赐、標(biāo)簽選擇器:p{list-style:none}

2>、類class選擇器 .box{width:100px}

3>京办、id選擇器? #box{width:100px}

4>掀序、通配符選擇器(*) *{margin:0}

5>、組合選擇器 .box,.header{}

6>惭婿、后代選擇器 li a{}

7>不恭、子選擇器ul > li

8>、偽類選擇器:a標(biāo)簽里的hover,active,link,visited

9>财饥、相鄰選擇器(h1+p)

10>换吧、屬性選擇器(a[rel="external"])

a[src^=”https”] 選擇其src屬性值以”https”開頭的每個(gè)元素

a[src$=”.pdf”] 選擇其src屬性值以”.pdf”結(jié)尾的所有元素

a[src*=”abc”] 選擇其src屬性中包含”abc”子串的每個(gè)元素

哪些屬性可以繼承?


Font-family佑力、font-size式散、font-style、color打颤、line-height暴拄、list-style、text-indent编饺、text-align...

哪些屬性不可繼承


Margin? border width height padding background position left right top bottom...

優(yōu)先級(jí)的算法:


用!import可以改變優(yōu)先級(jí)別為最高乖篷,其次是style對(duì)象,然后是 id>class>tag,另外同級(jí)樣式按照聲明的順序后出現(xiàn)的順序具有最高優(yōu)先級(jí)

40透且、編寫一個(gè)類和類繼承撕蔼,類名為Person豁鲤,含有屬性?name,age,含有方法sayhello,編寫一個(gè)Student類鲸沮,繼承自Person琳骡,自由屬性score,自有方法study


41讼溺、什么叫做類數(shù)組


類數(shù)組是對(duì)象數(shù)據(jù)類型的楣号。

以正整數(shù)作為索引,索引逐級(jí)遞增怒坯,索引代表的是當(dāng)前對(duì)應(yīng)的某一個(gè)元素炫狱。

還有一個(gè)length的屬性代表類數(shù)組的個(gè)數(shù)

通過getElementsByTagName getElementByClassName 獲取的都是類數(shù)組 函數(shù)里的arguments

42、字符串的方法 String


1.charAt(索引) 獲取指定索引位置的字符? str.charAt(8)

2.subStr(n,m) 從索引開始截取m個(gè)

3.SubString(n,m)從索引n開始找到索引為m處(不包含m)剔猿,把找到的以字符串方式返回

4.slice(n,m) 從索引n開始找到索引為m處(不包含m)视译,把找到的以字符串方式返回 支持負(fù)數(shù)作為索引

5.indexOf/lastIndexOf? ? str.indexOf(“!")

6、toLoweCase/toUpperCase

7.replace 替換? str.replace(“l(fā)iu”,”劉”)? str.replace(“/liu/g”,”劉”) 在不適用正則的情況下只能替換一次

8. split 按照指定字符 分割成數(shù)組(例如時(shí)間的格式化)

43归敬、獲取[n-m]之間的隨機(jī)整數(shù)


Math.round(Math.random()*(m-n)+n)

44酷含、ajax屬性jquery


type 請(qǐng)求方式 get post

datatype 服務(wù)器返回的數(shù)據(jù)類型xml html script jsonp json text

contentType 默認(rèn)值: "application/x-www-form-urlencoded"。發(fā)送信息至服務(wù)器時(shí)內(nèi)容編碼類型汪茧。

beforeSend

在發(fā)送請(qǐng)求之前調(diào)用第美,并且傳入一個(gè) XMLHttpRequest 作為參數(shù)。

45陆爽、事件流分為哪幾個(gè)階段


捕獲階段:從外向里依次查找元素

目標(biāo)階段:當(dāng)前事件源本身的操作

冒泡階段:從內(nèi)到外一次觸發(fā)相關(guān)的行為(我們最常用的就是冒泡階段)

DOM0級(jí)事件只能這些方法在冒泡階段執(zhí)行,怎么控制在捕獲階段完成扳缕,我們用DOM2級(jí)事件

? addEventListener-->第一個(gè)參數(shù)是行為的類型慌闭, 第二個(gè)參數(shù)是給當(dāng)前的綁定的方法,第三個(gè)參數(shù)是控制在哪個(gè)階段發(fā)生:true 在捕獲階段發(fā)生 false在冒泡階段發(fā)生

? document.body.addEventListener("click",function(){

? ? ? console.log("body");

? },false);

46躯舔、編寫一個(gè)復(fù)制對(duì)象值的方法


參考網(wǎng)址:https://www.cnblogs.com/libin-1/p/6845458.html

復(fù)制對(duì)象有 淺復(fù)制驴剔、深復(fù)制。

淺復(fù)制:沒有辦法真正復(fù)制一個(gè)對(duì)象粥庄,只是保存了該對(duì)象的引用地址,一旦原對(duì)象的值改變布讹,復(fù)制的對(duì)象值也會(huì)改變

深復(fù)制可以實(shí)現(xiàn)真正的復(fù)制一個(gè)對(duì)象训堆。

淺復(fù)制方法:Es6里Object.assign的第一個(gè)參數(shù)是目標(biāo)對(duì)象可以是一個(gè)或者多個(gè)

Let target={a:123};

Let source1={b:456};

Let source2={c:789,d:{e:”lovely”}}

Left obj=Object.assign(target,source1,source2);

Console.log(obj)==>{a:123,b:456,c:789,d:{e:”lovely”}}

Source2.d.e=”hello”;

Console.log(obj)==>{a:123,b:456,c:789,d:{e:”hello”}}//源對(duì)象改變描验,它也改變了

深復(fù)制方法:先將對(duì)象轉(zhuǎn)換成字符串 再將字符串轉(zhuǎn)換成對(duì)象

let source2={c:789,d:{e:"lovely"}}

let obj2=JSON.parse(JSON.stringify(source2));源對(duì)象怎么改都不會(huì)影響到它

(還可以用遞歸編寫一個(gè)方法)

47坑鱼、box-sizing屬性


box-sizing屬性包括content-box(default),border-box,padding-box呼股。

?????1耕魄、content-box吸奴,border和padding不計(jì)算入width之內(nèi)

?????2马靠、padding-box甩鳄,padding計(jì)算入width內(nèi)

?????3、border-box档泽,border和padding計(jì)算入width之內(nèi)揖赴,

48燥滑、頁(yè)面渲染過程?


參考網(wǎng)址:https://m.jb51.net/show/105026

1.解析HTML文件,創(chuàng)建DOM樹

自上而下赃蛛,遇到任何樣式(link呕臂、style)與腳本(script)都會(huì)阻塞(外部樣式不阻塞后續(xù)外部腳本的加載)肪跋。

2.解析CSS

優(yōu)先級(jí):瀏覽器默認(rèn)設(shè)置<用戶設(shè)置<外部樣式<內(nèi)聯(lián)樣式<HTML中的style樣式州既;

3.將CSS與DOM合并,構(gòu)建渲染樹(renderingtree)

DOM樹與HTML一一對(duì)應(yīng)褥琐,渲染樹會(huì)忽略諸如head晤郑、display:none的元素

4.布局和繪制,重繪(repaint)和重排(reflow)

重排:若渲染樹的一部分更新吭练,且尺寸變化析显,就會(huì)發(fā)生重排;

重繪:部分節(jié)點(diǎn)需要更新分尸,但不改變其他集合形狀箩绍。如改變某個(gè)元素的顏色尺上,就會(huì)發(fā)生重繪怎抛。

49、Jquery上獲取寬度的三個(gè)函數(shù)?


width()返回元素的寬度

innerWidth()返回元素的寬度 包括內(nèi)邊距

outerWidth()返回元素的寬度 包括內(nèi)邊距和邊框

outerWidth(true)返回元素的寬度 包括內(nèi)邊距豆赏、邊框河绽、外邊距

50、Jquery上兩種擴(kuò)展方法


參考網(wǎng)址 https://www.cnblogs.com/gaoyukun/p/8823549.html

$.extend();

? (function(){

$.txtend({

? get:function(name){

Console.log(name);

}

})

})();

調(diào)用的時(shí)候 $.get(“l(fā)iu”);? //調(diào)用時(shí)直接$.函數(shù)名(參數(shù));

$.fn.extend();

?(function(){

$.fn.extend({

get:function(name){

Console.log(name);

}

})

})()

$(“button”).get(“l(fā)iu”);? /調(diào)用時(shí)要$(標(biāo)簽名).函數(shù)名();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纹份,一起剝皮案震驚了整個(gè)濱河市蔓涧,隨后出現(xiàn)的幾起案子笋额,更是在濱河造成了極大的恐慌兄猩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铜秆,死亡現(xiàn)場(chǎng)離奇詭異连茧,居然都是意外死亡巍糯,警方通過查閱死者的電腦和手機(jī)祟峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門搀愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搓幌,你說我怎么就攤上這事溉愁」战遥” “怎么了奕塑?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵龄砰,是天一觀的道長(zhǎng)换棚。 經(jīng)常有香客問我,道長(zhǎng)娘汞,這世上最難降的妖魔是什么你弦? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任鳖目,我火速辦了婚禮领迈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衷蜓。我一直安慰自己磁浇,他們只是感情好朽褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓜饥,像睡著了一般戴质。 火紅的嫁衣襯著肌膚如雪告匠。 梳的紋絲不亂的頭發(fā)上离唬,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天输莺,我揣著相機(jī)與錄音模闲,去河邊找鬼尸折。 笑死殷蛇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荸实。 我是一名探鬼主播缴淋,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼露氮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼钟沛!你這毒婦竟也來了恨统?” 一聲冷哼從身側(cè)響起畜埋,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤由捎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后软驰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锭亏,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慧瘤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年锅减,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怔匣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片每瞒。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖代芜,靈堂內(nèi)的尸體忽然破棺而出挤庇,到底是詐尸還是另有隱情罚随,我是刑警寧澤羽资,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布屠升,位于F島的核電站腹暖,受9級(jí)特大地震影響脏答,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阿蝶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一羡洁、第九天 我趴在偏房一處隱蔽的房頂上張望筑煮。 院中可真熱鬧真仲,春花似錦初澎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匕积。三九已至榜跌,卻和暖如春钓葫,著一層夾襖步出監(jiān)牢的瞬間础浮,已是汗流浹背豆同。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工影锈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枣抱。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓沃但,卻偏偏與公主長(zhǎng)得像宵晚,于是被迫代替她去往敵國(guó)和親淤刃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吱型,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,095評(píng)論 0 3
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化灼伤,入門級(jí)到專家級(jí)咪鲜,廣度和深度都會(huì)有所增加疟丙。 題目類型: 理論知...
    怡寶丶閱讀 2,569評(píng)論 0 7
  • 請(qǐng)參看我github中的wiki享郊,不定期更新炊琉。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,105評(píng)論 2 19
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,097評(píng)論 0 21
  • 一苔咪、理論基礎(chǔ)知識(shí)部分 1.1悼泌、講講輸入完網(wǎng)址按下回車馆里,到看到網(wǎng)頁(yè)這個(gè)過程中發(fā)生了什么 a. 域名解析 b. 發(fā)起T...
    我家媳婦蠢蠢噠閱讀 3,110評(píng)論 2 106