一、html基礎(chǔ)
1、你做的頁面在哪些流覽器測試過睬关?這些瀏覽器的內(nèi)核分別是什么?
IE: trident內(nèi)核
Firefox:gecko內(nèi)核
Safari:webkit內(nèi)核
Opera:以前是presto內(nèi)核诱担,Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核
Chrome:Blink(基于webkit,Google與Opera Software共同開發(fā))
2电爹、每個HTML文件里開頭都有個很重要的東西蔫仙,Doctype,知道這是干什么的嗎丐箩?
<!DOCTYPE> 聲明位于文檔中的最前面的位置摇邦,處于 <html> 標(biāo)簽之前。此標(biāo)簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規(guī)范屎勘。(重點:告訴瀏覽器按照何種規(guī)范解析頁面)
2.1施籍、請談一下你對網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機構(gòu)重要性的理解。
網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機構(gòu)都是為了能讓web發(fā)展的更‘健康’概漱,開發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn)丑慎,降低開發(fā)難度,開發(fā)成本犀概,SEO也會更好做立哑,也不會因為濫用代碼導(dǎo)致各種BUG、安全問題姻灶,最終提高網(wǎng)站易用性铛绰。
2.2、Doctype的作用产喉?嚴(yán)格模式與混雜模式的區(qū)別捂掰?
<!DOCTYPE>用于告知瀏覽器該以何種模式來渲染文檔
嚴(yán)格模式下:頁面排版及JS解析是以該瀏覽器支持的最高標(biāo)準(zhǔn)來執(zhí)行
混雜模式:不嚴(yán)格按照標(biāo)準(zhǔn)執(zhí)行,主要用來兼容舊的瀏覽器曾沈,向后兼容
2.3这嚣、對WEB標(biāo)準(zhǔn)以及W3C的理解與認(rèn)識
答:標(biāo)簽閉合、標(biāo)簽小寫塞俱、不亂嵌套姐帚、提高搜索機器人搜索幾率、使用外 鏈css和js腳本障涯、結(jié)構(gòu)行為表現(xiàn)的分離罐旗、文件下載與頁面速度更快、內(nèi)容能被更多的用戶所訪問唯蝶、內(nèi)容能被更廣泛的設(shè)備所訪問九秀、更少的代碼和組件,容易維 護粘我、改版方便鼓蜒,不需要變動頁面內(nèi)容、提供打印版本而不需要復(fù)制內(nèi)容、提高網(wǎng)站易用性都弹。
3娇豫、div+css的布局較table布局有什么優(yōu)點?
改版的時候更方便 只要改css文件畅厢。
頁面加載速度更快锤躁、結(jié)構(gòu)化清晰、頁面顯示簡潔或详。
表現(xiàn)與結(jié)構(gòu)相分離。
易于優(yōu)化(seo)搜索引擎更友好郭计,排名更容易靠前霸琴。
4、 img的alt與title有何異同昭伸? strong與em的異同梧乘?
a:alt(alt text):為不能顯示圖像、窗體或applets的用戶代理(UA)庐杨,alt屬性用來指定替換文字选调。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當(dāng)成 tool tip顯示)
title(tool tip):該屬性為設(shè)置該屬性的元素提供建議性的信息灵份。
strong:粗體強調(diào)標(biāo)簽仁堪,強調(diào),表示內(nèi)容的重要性
em:斜體強調(diào)標(biāo)簽填渠,更強烈強調(diào)弦聂,表示內(nèi)容的強調(diào)點
5、為什么利用多個域名來存儲網(wǎng)站資源會更有效氛什?
CDN緩存更方便
突破瀏覽器并發(fā)限制
節(jié)約cookie帶寬
節(jié)約主域名的連接數(shù)莺葫,優(yōu)化頁面響應(yīng)速度
防止不必要的安全問題
6、cookie枪眉、sessionstorage和localstorage
cookie較小捺檬,不能超過4k,localStorage,sessctionStorage可儲存容量較大贸铜,有5M
cookie有時效性堡纬,localStorage在客戶端長期保護數(shù)據(jù),sesstionStorage保存會話數(shù)據(jù)萨脑,關(guān)閉標(biāo)簽頁或瀏覽器數(shù)據(jù)消失
cookie可以跟后端交互隐轩,cookie數(shù)據(jù)始終在同源的http請求中攜帶;這兩個只能存儲在瀏覽器
7渤早、簡述一下src與href的區(qū)別职车。
src用于替換當(dāng)前元素,href用于在當(dāng)前文檔和引用資源之間確立聯(lián)系。
src是source的縮寫悴灵,指向外部資源的位置扛芽,指向的內(nèi)容將會嵌入到文檔中當(dāng)前標(biāo)簽所在位置;在請求src資源時會將其指向的資源下載并應(yīng)用到文檔內(nèi)积瞒,例如js腳本川尖,img圖片和frame等元素。
<script src =”js.js”></script>
當(dāng)瀏覽器解析到該元素時茫孔,會暫停其他資源的下載和處理叮喳,直到將該資源加載、編譯缰贝、執(zhí)行完畢馍悟,圖片和框架等元素也如此,類似于將所指向資源嵌入當(dāng)前標(biāo)簽內(nèi)剩晴。這也是為什么將js腳本放在底部而不是頭部锣咒。
href是Hypertext Reference的縮寫,指向網(wǎng)絡(luò)資源所在位置赞弥,建立和當(dāng)前元素(錨點)或當(dāng)前文檔(鏈接)之間的鏈接毅整,如果我們在文檔中添加
<link href=”common.css” rel=”stylesheet”/>
那么瀏覽器會識別該文檔為css文件,就會并行下載資源并且不會停止對當(dāng)前文檔的處理绽左。這也是為什么建議使用link方式來加載css悼嫉,而不是使用@import方式。
8拼窥、知道的網(wǎng)頁制作會用到的圖片格式有哪些承粤?
png-8,png-24闯团,jpeg辛臊,gif,svg房交。
但是上面的那些都不是面試官想要的最后答案彻舰。面試官希望聽到是Webp。(是否有關(guān)注新技術(shù)候味,新鮮事物)
科普一下Webp:WebP格式刃唤,谷歌(google)開發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3白群,并能節(jié)省大量的服務(wù)器帶寬資源和數(shù)據(jù)空間尚胞。Facebook Ebay等知名網(wǎng)站已經(jīng)開始測試并使用WebP格式。
在質(zhì)量相同的情況下帜慢,WebP格式圖像的體積要比JPEG格式圖像小40%
9笼裳、在css/js代碼上線之后開發(fā)人員經(jīng)常會優(yōu)化性能唯卖,從用戶刷新網(wǎng)頁開始,一次js請求一般情況下有哪些地方會有緩存處理躬柬?
答案:dns緩存拜轨,cdn緩存,瀏覽器緩存允青,服務(wù)器緩存橄碾。
10、談?wù)勔郧岸私嵌瘸霭l(fā)做好SEO需要考慮什么颠锉?
了解搜索引擎如何抓取網(wǎng)頁和如何索引網(wǎng)頁
你需要知道一些搜索引擎的基本工作原理法牲,各個搜索引擎之間的區(qū)別,搜索機器人(SE robot 或叫 web crawler)如何進行工作琼掠,搜索引擎如何對搜索結(jié)果進行排序等等皆串。
Meta標(biāo)簽優(yōu)化
主要包括主題(Title),網(wǎng)站描述(Description)眉枕,和關(guān)鍵詞(Keywords)。還有一些其它的隱藏文字比如Author(作者)怜森,Category(目錄)速挑,Language(編碼語種)等。
如何選取關(guān)鍵詞并在網(wǎng)頁中放置關(guān)鍵詞
搜索就得用關(guān)鍵詞副硅。關(guān)鍵詞分析和選擇是SEO最重要的工作之一姥宝。首先要給網(wǎng)站確定主關(guān)鍵詞(一般在5個上下),然后針對這些關(guān)鍵詞進行優(yōu)化恐疲,包括關(guān)鍵詞密度(Density)腊满,相關(guān)度(Relavancy),突出性(Prominency)等等培己。
了解主要的搜索引擎
雖然搜索引擎有很多碳蛋,但是對網(wǎng)站流量起決定作用的就那么幾個。比如英文的主要有Google省咨,Yahoo肃弟,Bing等;中文的有百度零蓉,搜狗笤受,有道等。不同的搜索引擎對頁面的抓取和索引敌蜂、排序的規(guī)則都不一樣箩兽。還要了解各搜索門戶和搜索引擎之間的關(guān)系,比如AOL網(wǎng)頁搜索用的是Google的搜索技術(shù)章喉,MSN用的是Bing的技術(shù)汗贫。
主要的互聯(lián)網(wǎng)目錄
Open Directory自身不是搜索引擎身坐,而是一個大型的網(wǎng)站目錄,他和搜索引擎的主要區(qū)別是網(wǎng)站內(nèi)容的收集方式不同芳绩。目錄是人工編輯的掀亥,主要收錄網(wǎng)站主頁;搜索引擎是自動收集的妥色,除了主頁外還抓取大量的內(nèi)容頁面搪花。
按點擊付費的搜索引擎
搜索引擎也需要生存,隨著互聯(lián)網(wǎng)商務(wù)的越來越成熟嘹害,收費的搜索引擎也開始大行其道撮竿。最典型的有Overture和百度,當(dāng)然也包括Google的廣告項目Google Adwords笔呀。越來越多的人通過搜索引擎的點擊廣告來定位商業(yè)網(wǎng)站幢踏,這里面也大有優(yōu)化和排名的學(xué)問,你得學(xué)會用最少的廣告投入獲得最多的點擊许师。
搜索引擎登錄
網(wǎng)站做完了以后房蝉,別躺在那里等著客人從天而降。要讓別人找到你微渠,最簡單的辦法就是將網(wǎng)站提交(submit)到搜索引擎搭幻。如果你的是商業(yè)網(wǎng)站,主要的搜索引擎和目錄都會要求你付費來獲得收錄(比如Yahoo要299美元)逞盆,但是好消息是(至少到目前為止)最大的搜索引擎Google目前還是免費檀蹋,而且它主宰著60%以上的搜索市場。
鏈接交換和鏈接廣泛度(Link Popularity)
網(wǎng)頁內(nèi)容都是以超文本(Hypertext)的方式來互相鏈接的云芦,網(wǎng)站之間也是如此俯逾。除了搜索引擎以外,人們也每天通過不同網(wǎng)站之間的鏈接來Surfing(“沖浪”)舅逸。其它網(wǎng)站到你的網(wǎng)站的鏈接越多桌肴,你也就會獲得更多的訪問量。更重要的是琉历,你的網(wǎng)站的外部鏈接數(shù)越多识脆,會被搜索引擎認(rèn)為它的重要性越大,從而給你更高的排名善已。
合理的標(biāo)簽使用
11灼捂、CSS都有哪些選擇器?
派生選擇器(用HTML標(biāo)簽申明)
id選擇器(用DOM的ID申明)
類選擇器(用一個樣式類名申明)
屬性選擇器(用DOM的屬性申明换团,屬于CSS2悉稠,IE6不支持,不常用艘包,不知道就算了)
除了前3種基本選擇器的猛,還有一些擴展選擇器耀盗,包括
后代選擇器(利用空格間隔,比如div .a{ })
群組選擇器(利用逗號間隔卦尊,比如p,div,#a{ })
那么問題來了叛拷,CSS選擇器的優(yōu)先級是怎么樣定義的?
基本原則:
一般而言岂却,選擇器越特殊忿薇,它的優(yōu)先級越高。也就是選擇器指向的越準(zhǔn)確躏哩,它的優(yōu)先級就越高署浩。
復(fù)雜的計算方法:
用1表示派生選擇器的優(yōu)先級
用10表示類選擇器的優(yōu)先級
用100標(biāo)示ID選擇器的優(yōu)先級
div.test1 .span var 優(yōu)先級 1+10 +10 +1
span#xxx .songs li 優(yōu)先級1+100 + 10 + 1
xxx li 優(yōu)先級 100 +1
12、行內(nèi)元素和塊級元素的具體區(qū)別是什么扫尺?行內(nèi)元素的padding和margin可設(shè)置嗎筋栋?
塊級元素(block)特性:
總是獨占一行,表現(xiàn)為另起一行開始正驻,而且其后的元素也必須另起一行顯示;
寬度(width)弊攘、高度(height)、內(nèi)邊距(padding)和外邊距(margin)都可控制;
內(nèi)聯(lián)元素(inline)特性:
和相鄰的內(nèi)聯(lián)元素在同一行;
寬度(width)姑曙、高度(height)襟交、內(nèi)邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變(也就是padding和margin的left和right是可以設(shè)置的),就是里面文字或圖片的大小渣磷。
那么問題來了,瀏覽器還有默認(rèn)的天生inline-block元素(擁有內(nèi)在尺寸授瘦,可設(shè)置高寬醋界,但不會自動換行),有哪些提完?
答案:<input> 形纺、<img> 、<button> 徒欣、<texterea> 逐样、<label>。
13打肝、Sass脂新、LESS是什么?大家為什么要使用他們粗梭?
他們是CSS預(yù)處理器争便。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS断医。
例如Less是一種動態(tài)樣式語言. 將CSS賦予了動態(tài)語言的特性滞乙,如變量奏纪,繼承,運算斩启, 函數(shù). LESS 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox)序调,也可一在服務(wù)端運行 (借助 Node.js)。
為什么要使用它們兔簇?
結(jié)構(gòu)清晰发绢,便于擴展。
可以方便地屏蔽瀏覽器私有語法差異男韧。這個不用多說朴摊,封裝對瀏覽器語法差異的重復(fù)處理,減少無意義的機械勞動此虑。
可以輕松實現(xiàn)多重繼承甚纲。
完全兼容 CSS 代碼,可以方便地應(yīng)用到老項目中朦前。LESS 只是在 CSS 語法上做了擴展介杆,所以老的 CSS 代碼也可以與 LESS 代碼一同編譯。
14韭寸、CSS中l(wèi)ink和@import的區(qū)別是:
Link屬于html標(biāo)簽春哨,而@import是CSS中提供的
在頁面加載的時候,link會同時被加載恩伺,而@import引用的CSS會在頁面加載完成后才會加載引用的CSS
@import只有在ie5以上才可以被識別赴背,而link是html標(biāo)簽,不存在瀏覽器兼容性問題
Link引入樣式的權(quán)重大于@import的引用(@import是將引用的樣式導(dǎo)入到當(dāng)前的頁面中)
15晶渠、IE的雙邊距BUG:塊級元素float后設(shè)置橫向margin凰荚,ie6顯示的margin比設(shè)置的較大。解決:加入_display:inline
16褒脯、html常見兼容性問題便瑟?
1.雙邊距BUG float引起的 使用display
2.3像素問題 使用float引起的 使用dislpay:inline -3px
3.超鏈接hover 點擊后失效 使用正確的書寫順序 link visited hover active
4.Ie z-index問題 給父級添加position:relative
5.Png 透明 使用js代碼 改
6.Min-height 最小高度 !Important 解決’
7.select 在ie6下遮蓋 使用iframe嵌套
8.為什么沒有辦法定義1px左右的寬度容器(IE6默認(rèn)的行高造成的番川,使用over:hidden,zoom:0.08 line-height:1px)
9.IE5-8不支持opacity到涂,解決辦法:
.opacity {
opacity: 0.4
filter: alpha(opacity=60); /* for IE5-7 /
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; / for IE 8*/
}
- IE6不支持PNG透明背景,解決辦法: IE6下使用gif圖片
17颁督、CSS的盒子模型践啄?
(1)兩種, IE 盒子模型沉御、標(biāo)準(zhǔn) W3C 盒子模型往核;IE 的content部分包含了 border 和 padding;
(2)盒模型: 內(nèi)容(content)、填充(padding)嚷节、邊界(margin)聂儒、 邊框(border).
18虎锚、列出display的值,說明他們的作用衩婚。position的值窜护, relative和absolute定位原點是?
- block 象塊類型元素一樣顯示非春。
none 缺省值柱徙。向行內(nèi)元素類型一樣顯示。
inline-block 象行內(nèi)元素一樣顯示奇昙,但其內(nèi)容象塊類型元素一樣顯示护侮。
list-item 象塊類型元素一樣顯示,并添加樣式列表標(biāo)記储耐。 - position的值
*absolute
生成絕對定位的元素羊初,相對于 static 定位以外的第一個父元素進行定位。
*fixed (老IE不支持)
生成絕對定位的元素什湘,相對于瀏覽器窗口進行定位长赞。
- relative
生成相對定位的元素,相對于其正常位置進行定位闽撤。 - static 默認(rèn)值得哆。沒有定位,元素出現(xiàn)在正常的流中
*(忽略 top, bottom, left, right z-index 聲明)哟旗。 - inherit 規(guī)定從父元素繼承 position 屬性的值贩据。
19、哪些css屬性可以繼承闸餐?
可繼承: font-size font-family color, ul li dl dd dt;
不可繼承 :border padding margin width height ;
二饱亮、JS基礎(chǔ)
1、javascript的typeof返回哪些數(shù)據(jù)類型
object number function boolean underfind string
2绎巨、例舉3種強制類型轉(zhuǎn)換和2種隱式類型轉(zhuǎn)換?
強制(parseInt,parseFloat,Number())
隱式(==)
1==”1”//true
null==undefined//true
3近尚、split() join() 的區(qū)別
前者是切割成數(shù)組的形式蠕啄,
后者是將數(shù)組轉(zhuǎn)換成字符串
4场勤、數(shù)組方法pop() push() unshift() shift()
Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除
5、IE和DOM事件流的區(qū)別
1.執(zhí)行順序不一樣歼跟、
2.參數(shù)不一樣
3.事件加不加on
4.this指向問題
6和媳、IE和標(biāo)準(zhǔn)下有哪些兼容性的寫法
var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement||ev.target
7、call和apply的區(qū)別
call和apply相同點:
都是為了用一個本不屬于一個對象的方法哈街,讓這個對象去執(zhí)行
toString.call([],1,2,3)
toString.apply([],[1,2,3])
8留瞳、閉包
當(dāng)一個函數(shù)返回它內(nèi)部定義的一個函數(shù)時,就產(chǎn)生了一個閉包
閉包的作用
1骚秦、讓變量長期駐扎在內(nèi)存不被釋放她倘,因為內(nèi)部函數(shù)依賴外部變量璧微,所以垃圾回收機制不會回收外部變量。當(dāng)希望變量不會被重置的時候就可以用到硬梁,比如循環(huán)中直接找到對應(yīng)元素的索引
2前硫、可以通過回調(diào)函數(shù)獲取異步的數(shù)據(jù)
3、把函數(shù)內(nèi)部的數(shù)據(jù)變成外部可以調(diào)用
4荧止、避免全局變量的污染
9屹电、如何阻止事件冒泡和默認(rèn)事件
e. stopPropagation();//標(biāo)準(zhǔn)瀏覽器
event.canceBubble=true;//ie9之前
阻止默認(rèn)事件:
為了不讓a點擊之后跳轉(zhuǎn),我們就要給他的點擊事件進行阻止
return false
e.preventDefault()
10跃巡、添加 刪除 替換 插入到某個接點的方法
obj.appendChild()
obj.insertBefore() //原生的js中不提供insertAfter();
obj.replaceChild()//替換
obj.removeChild()//刪除
11危号、javascript的同源策略
一段腳本只能讀取來自于同一來源的窗口和文檔的屬性,這里的同一來源指的是主機名素邪、協(xié)議和端口號的組合
http,ftp:協(xié)議
主機名外莲;localhost
端口名:80:http協(xié)議的默認(rèn)端口
https:默認(rèn)端口是8083
同源策略帶來的麻煩:ajax在不同域名下的請求無法實現(xiàn),
如果說想要請求其他來源的js文件娘香,或者json數(shù)據(jù)苍狰,那么可以通過jsonp來解決
11、數(shù)組去重
function arr(arr){
var result = [];
for(var i = 0;i<arr.length;i++){
if(result.indexOf(arr[i])==-1){
result.push(arr[i])
}
}
console.log(result);
}
冒泡排序
var arr = [1,22,2,2,4,5,5];
for(var i = 0;i < arr.length - 1 ; i++){
for( var j = 0 ; j < arr.length -1 - i ; j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr)
12烘绽、怎樣添加淋昭、移除、移動安接、復(fù)制翔忽、創(chuàng)建和查找節(jié)點(原生JS,實在基礎(chǔ)盏檐,沒細(xì)寫每一步)
1)創(chuàng)建新節(jié)點
createDocumentFragment() //創(chuàng)建一個DOM片段
createElement() //創(chuàng)建一個具體的元素
createTextNode() //創(chuàng)建一個文本節(jié)點
2)添加事镣、移除、替換寥闪、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替換
insertBefore() //插入
3)查找
getElementsByTagName() //通過標(biāo)簽名稱
getElementsByName() //通過元素的Name屬性的值
getElementById() //通過元素Id敬飒,唯一性
13、Javascript創(chuàng)建對象的幾種方式硫豆?
工廠方式龙巨,構(gòu)造函數(shù)方式,原型模式熊响,混合構(gòu)造函數(shù)原型模式旨别,動態(tài)原型方式
14、jQuery和Zepto的區(qū)別汗茄?各自的使用場景秸弛?
jQuery主要用于pc端,當(dāng)然有對應(yīng)的jQuerymobile用于移動端,zepto比jQuery更加小巧递览,主要用于移動端
jquer mobile相對于zepto功能強大叼屠,但是體積也很龐大,zepto非常的輕量
15绞铃、針對 jQuery 的優(yōu)化方法环鲤?
a、優(yōu)先使用ID選擇器
b憎兽、jquery獲取到的DOM元素如果需要多次使用冷离,建議使用一個變量將其保存起來,因為操作DOM的過程是非常耗費性能的
c纯命、在class前使用tag(標(biāo)簽名)
d西剥、給選擇器一個上下文
e、慎用 .live()方法(應(yīng)該說盡量不要使用)
f亿汞、使用data()方法存儲臨時變量
16瞭空、對前端界面工程師這個職位是怎么樣理解的?它的前景會怎么樣疗我?
前端是最貼近用戶的程序員咆畏,比后端、數(shù)據(jù)庫吴裤、產(chǎn)品經(jīng)理旧找、運營、安全都近麦牺。
1钮蛛、實現(xiàn)界面交互
2、提升用戶體驗
3剖膳、有了Node.js魏颓,前端可以實現(xiàn)服務(wù)端的一些事情
前端是最貼近用戶的程序員,前端的能力就是能讓產(chǎn)品從 90分進化到 100 分吱晒,甚至更好甸饱,
參與項目,快速高質(zhì)量完成實現(xiàn)效果圖仑濒,精確到1px叹话;
與團隊成員,UI設(shè)計躏精,產(chǎn)品經(jīng)理的溝通渣刷;
做好的頁面結(jié)構(gòu)鹦肿,頁面重構(gòu)和用戶體驗矗烛;
處理hack,兼容、寫出優(yōu)美的代碼格式瞭吃;
針對服務(wù)器的優(yōu)化碌嘀、擁抱最新前端技術(shù)。
17歪架、請用正則表達式寫一個簡單的郵箱驗證股冗。
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/;
18、你用過require.js嗎和蚪?它有什么特性止状?
(1)實現(xiàn)js文件的異步加載,避免網(wǎng)頁失去響應(yīng)攒霹;
(2)管理模塊之間的依賴性怯疤,便于代碼的編寫和維護。
19催束、分別闡述split(),slice(),splice(),join()集峦?
join()用于把數(shù)組中的所有元素拼接起來放入一個字符串。所帶的參數(shù)為分割字符串的分隔符抠刺,默認(rèn)是以逗號分開塔淤。歸屬于Array
split()即把字符串分離開,以數(shù)組方式存儲速妖。歸屬于Stringstring
slice() 方法可從已有的數(shù)組中返回選定的元素高蜂。該方法并不會修改數(shù)組,而是返回一個子數(shù)組罕容。如果想刪除數(shù)組中的一段元素妨马,應(yīng)該使用方法 Array.splice()
splice() 方法向/從數(shù)組中添加/刪除項目,然后返回被刪除的項目杀赢。返回的是含有被刪除的元素的數(shù)組烘跺。
20、javascript繼承的 6 種方法脂崔?
- 原型鏈繼承
- 借用構(gòu)造函數(shù)繼承
- 組合繼承(原型+借用構(gòu)造)
- 原型式繼承
- 寄生式繼承
- 寄生組合式繼承
20滤淳、創(chuàng)建對象的6種方式總結(jié)
- 字面式創(chuàng)建對象
- 工廠模式
- 構(gòu)造函數(shù)模式
- 原型模式
- 混合模式(構(gòu)造函數(shù)模式+原型模式)
- new 操作符 + Object 創(chuàng)建對象
21、如何編寫高性能的Javascript砌左?
使用 DocumentFragment 優(yōu)化多次 append
通過模板元素 clone 脖咐,替代 createElement
使用一次 innerHTML 賦值代替構(gòu)建 dom 元素
使用 firstChild 和 nextSibling 代替 childNodes 遍歷 dom 元素
使用 Array 做為 StringBuffer ,代替字符串拼接的操作
將循環(huán)控制量保存到局部變量
順序無關(guān)的遍歷時汇歹,用 while 替代 for
將條件分支屁擅,按可能性順序從高到低排列
在同一條件子的多( >2 )條件分支時,使用 switch 優(yōu)于 if
使用三目運算符替代條件分支
需要不斷執(zhí)行的時候产弹,優(yōu)先考慮使用 setInterval
22派歌、數(shù)組和對象有哪些原生方法,列舉一下?
Array.concat( ) 連接數(shù)組
Array.join( ) 將數(shù)組元素連接起來以構(gòu)建一個字符串
Array.length 數(shù)組的大小
Array.pop( ) 刪除并返回數(shù)組的最后一個元素
Array.push( ) 給數(shù)組添加元素
Array.reverse( ) 顛倒數(shù)組中元素的順序
Array.shift( ) 將元素移出數(shù)組
Array.slice( ) 返回數(shù)組的一部分
Array.sort( ) 對數(shù)組元素進行排序
Array.splice( ) 插入胶果、刪除或替換數(shù)組的元素
Array.toLocaleString( ) 把數(shù)組轉(zhuǎn)換成局部字符串
Array.toString( ) 將數(shù)組轉(zhuǎn)換成一個字符串
Array.unshift( ) 在數(shù)組頭部插入一個元素
Object對象的常用方法
Object.hasOwnProperty( ) 檢查屬性是否被繼承
Object.isPrototypeOf( ) 一個對象是否是另一個對象的原型
Object.propertyIsEnumerable( ) 是否可以通過for/in循環(huán)看到屬性
Object.toLocaleString( ) 返回對象的本地字符串表示
Object.toString( ) 定義一個對象的字符串表示
Object.valueOf( ) 指定對象的原始值
23匾嘱、模塊化開發(fā)怎么做?
理解模塊化開發(fā)模式:瀏覽器端requirejs早抠,seajs霎烙;服務(wù)器端nodejs;ES6模塊化蕊连;fis悬垃、webpack等前端整體模塊化解決方案;grunt甘苍、gulp等前端工作流的使用