? json是一種數(shù)據(jù)格式(鍵值對(duì))靴拱,是js的內(nèi)置對(duì)象(如Math對(duì)象);
? json的數(shù)據(jù)類型:number嚼松、string嫡良、boolean、null献酗、undefined寝受、object
? ? 將對(duì)象序列化成json: JSON.stringify( 對(duì)象 ) :
???????????????????????????????????? JSON.stringify( 對(duì)象 , null , ' ' );
???????????????????????????????????? 第二個(gè)參數(shù)篩選。第三個(gè)參數(shù)按縮進(jìn)輸出罕偎,可以傳入Array
???????????????????????????????????? 還可以傳入一個(gè)函數(shù)很澄,這樣對(duì)象的每個(gè)鍵值對(duì)都會(huì)被函數(shù)先處理
? ? 反序列化:JSON格式的字符串,用JSON.parse()把它變成一個(gè)JavaScript對(duì)象:
? JavaScript對(duì)象中的key沒(méi)有引號(hào)颜及,json中的key有引號(hào)甩苛。
? typeof( null / [] / {} )? ==> "object"
? typeof(undefined)? ==> "undefined"
? null == undefined? ===> true? (與下行對(duì)比記憶)
? typeof? null ? ? ===> ? object
? 雙等時(shí),更偏向轉(zhuǎn)化成Number
??????????????????????? 包裝對(duì)象???????????????? ???????????????? ?????? 普通對(duì)象
?????????? typeof ?? new? Number(123);?? ??? // 'object' ???????????? typeof123;??? // 'number '
?????????? typeof??? new? String( 'str' );? ???? // 'object'?????????????? typeofNaN;?? // 'number
?????????? typeof??? new?? Boolean(true);? ?? // 'object' ? ? ? ? ? ?? typeof'str';??? // 'string'
?????????? typeof包裝對(duì)象 == ‘object’ ? ????????? ?????????????????? ? ? ?? typeoftrue;??? //'boolean'
??????????????????????? ??????????????????????? ????????????????????????????????????????? ??? typeofundefined;?? // 'undefined'
??????????????????????? ??????????????????????? ?????????????????????????????????????????? ?? typeofMath.abs;??? //'function'
??????????????????????? ??????????????????????? ??????????????????????? ????????????????????? typeofnull;???? // 'object'
??????????????????????? ??????????????????????? ??????????????????????? ????????????????????? typeof[];?????? // 'object'
??????????????????????? ??????????????????????? ??????????????????????? ????????????????????? typeof{};// 'object'????
關(guān)于獲取時(shí)間:
var now =newDate();
now;???????????????????????????? // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear();?????? // 2015, 年份
now.getMonth();????????? // 5, 月份器予,注意月份范圍是0~11浪藻,5表示六月
now.getDate();???????????? // 24, 表示24號(hào)
now.getDay();????????????? // 3, 表示星期三
now.getHours();?????????? // 19, 24小時(shí)制
now.getMinutes();??????? // 49, 分鐘
now.getSeconds();?????? // 22, 秒
now.getMilliseconds(); // 875, 毫秒數(shù)
now.getTime();????????????? // 1435146562875, 以number形式表示的時(shí)間戳
//? 時(shí)間戳是一個(gè)自增的整數(shù),它表示從1970年1月1日零時(shí)整的GMT時(shí)區(qū)開始的那一刻乾翔,到現(xiàn)在的毫秒數(shù)。假設(shè)瀏覽器所在電腦的時(shí)間是準(zhǔn)確的施戴,那么世界上無(wú)論哪個(gè)時(shí)區(qū)的電腦反浓,它們此刻產(chǎn)生的時(shí)間戳數(shù)字都是一樣的,所以赞哗,時(shí)間戳可以精確地表示一個(gè)時(shí)刻雷则,并且與時(shí)區(qū)無(wú)關(guān)。
獲取時(shí)間戳:
' use? strict ' ;
if (Date.now) {
? ?? ? console.log(Date.now()); // 老版本IE沒(méi)有now()方法
} else {
? ? ?? console.log(new Date().getTime());
}
JavaScript的Date對(duì)象月份值從0開始肪笋,牢記0=1月月劈,1=2月,2=3月藤乙,……猜揪,11=12月。
原型:
this指向:
1坛梁、 this 在函數(shù)里面
????? 對(duì)于全局性函數(shù)調(diào)用而姐,函數(shù)內(nèi)部的this就是指的全局對(duì)象window,即是:this是調(diào)用函數(shù)所在的對(duì)象划咐。
2拴念、this 在構(gòu)造函數(shù)里
???? 聲明一個(gè)構(gòu)造函數(shù)的實(shí)例對(duì)象時(shí)钧萍,構(gòu)造函數(shù)內(nèi)部的this都會(huì)指向新的實(shí)例對(duì)象,或者說(shuō)政鼠,構(gòu)造函數(shù)內(nèi)部的this指向的是新創(chuàng)建的對(duì)象本身风瘦。
3、在對(duì)象的方法中調(diào)用
???? 當(dāng)person對(duì)象調(diào)用info()函數(shù)時(shí)公般,info函數(shù)內(nèi)部的this指向的就是person對(duì)象万搔。即,當(dāng)this出現(xiàn)在對(duì)象的方法中時(shí)俐载,那么該方法內(nèi)部的this指向的就是這個(gè)對(duì)象本身蟹略,也就是說(shuō)this指向的調(diào)用函數(shù)的對(duì)象。
總結(jié):函數(shù)內(nèi)部的this都是代表當(dāng)前對(duì)象遏佣,只不過(guò)是JavaScript中函數(shù)內(nèi)部的this會(huì)隨著程序而指向不同的對(duì)象挖炬。
那么我的問(wèn)題是:我們能不能手動(dòng)修改this的指向呢?
答案:可以的状婶,使用call或者apply意敛。這個(gè)也就是call和apply的作用-->改變函數(shù)內(nèi)部this的指向。
call /apply? :? 使用指定的對(duì)象調(diào)用當(dāng)前函數(shù)(Function對(duì)象中的方法)
兩個(gè)方法的功能完全一樣膛虫,唯一區(qū)別就是參數(shù)草姻。
第一個(gè)參數(shù):表示的是函數(shù)執(zhí)行時(shí),this指向誰(shuí)
第二個(gè)參數(shù):apply要求傳入的是一個(gè)參數(shù)數(shù)組稍刀,也就是說(shuō)將一系列參數(shù)組成一個(gè)數(shù)組傳入撩独,而對(duì)于call來(lái)說(shuō),散列的的參數(shù)值的方式傳入账月。例如综膀,func(thisObj,arg1局齿,arg2剧劝,arg3...)對(duì)應(yīng)的apply用法就是func(thisObj,[arg1抓歼,arg2讥此,arg3...])
第三個(gè)參數(shù):
上面的代碼就解決了問(wèn)題,分析:就是說(shuō)谣妻,當(dāng)在函數(shù)中調(diào)用call方法時(shí)萄喳,函數(shù)內(nèi)部的this會(huì)自動(dòng)指向call方法中的第一個(gè)參數(shù)。上面的例子中拌禾,當(dāng)執(zhí)行info.call(p1)時(shí)取胎,info函數(shù)內(nèi)部的this則會(huì)自動(dòng)指向p1對(duì)象,所以當(dāng)然就可以call這種方式來(lái)完成對(duì)p1對(duì)象的打印。
參考地址: http://baijiahao.baidu.com/s?id=1595639654879064333&wfr=spider&for=pc?
==和===的區(qū)別:????主要要說(shuō)(強(qiáng)制類型轉(zhuǎn)化)
按位或:先轉(zhuǎn)化為二進(jìn)制闻蛀,然后按位或? ? ? ??
eg:C語(yǔ)言中5|7 :
? ? ? ? 5的二進(jìn)制是101匪傍,7的二進(jìn)制是111,由于是按位或觉痛,所有每個(gè)位置有一個(gè)1就行役衡,最后111,是7的二進(jìn)制薪棒,答案為7
? 非嚴(yán)格模式下:setTimeout執(zhí)行函數(shù)中的this手蝎,所指向永遠(yuǎn)是window(延遲執(zhí)行函數(shù)中的this)
? 嚴(yán)格模式下:setTimeout執(zhí)行函數(shù)中的this,所指向?yàn)閡ndefined
? 普通事件中的onclick是DOM0級(jí)事件只支持單個(gè)事件俐芯,會(huì)被其他onclick事件覆蓋棵介,而事件綁定中的addEventListener是DOM2級(jí)事件可以添加多個(gè)事件而不用擔(dān)心被覆蓋
? web worker 是運(yùn)行在后臺(tái)的 JavaScript,獨(dú)立于其他腳本吧史,不會(huì)影響頁(yè)面的性能邮辽。您可以繼續(xù)做任何愿意做的事情:點(diǎn)擊、選取內(nèi)容等等贸营,而此時(shí) web worker 在后臺(tái)運(yùn)行吨述。
? 網(wǎng)站文件資源優(yōu)化:
????????????CDN? (內(nèi)容分發(fā)網(wǎng)絡(luò))
? ? ? ? ? ? 文件合并? ( 例如雪碧圖 )
? ? ? ? ? ? 文件壓縮
? ? ? ? ? ? 使用緩存
? 前端性能優(yōu)化
????????????配置超長(zhǎng)時(shí)間的本地緩存 —— 節(jié)省帶寬,提高性能
????????????采用內(nèi)容摘要作為緩存更新依據(jù)? ? ? —— 精確的緩存控制
????????????靜態(tài)資源CDN部署? ? ? ? ? ? ? ? ? ? ? ? ? —— 優(yōu)化網(wǎng)絡(luò)請(qǐng)求
????????????更資源發(fā)布路徑實(shí)現(xiàn)非覆蓋式發(fā)布? —— 平滑升級(jí)
??WEB應(yīng)用從服務(wù)器主動(dòng)推送Data到客戶端的方式
? ??????????html5 websoket
? ??????????WebSocket通過(guò)Flash
? ??????????XHR長(zhǎng)時(shí)間連接????
? ??????????XHR Multipart Streaming
? ? ? ????? 不可見的iframe
? 存儲(chǔ)
? ? ? html5中的 Web存儲(chǔ)
? ? ? ? 1钞脂、客戶端儲(chǔ)存數(shù)據(jù)的方式
? ? ? ? ? localStorage:? ? ? ? ? ? ? ?沒(méi)有時(shí)間限制的存儲(chǔ)揣云,關(guān)閉瀏覽器后數(shù)據(jù)還存在
? ? ? ? ? sessionStorage:? ? ? ? ? 針對(duì)一個(gè)session的數(shù)據(jù)存儲(chǔ),瀏覽器關(guān)閉冰啃,數(shù)據(jù)消失
? ? ? ? ?對(duì)比:cookie(非h5):? ? ? ? ? ? ?
?????????????????????儲(chǔ)存用戶名等數(shù)據(jù)邓夕,但不適合大量數(shù)據(jù),速度慢阎毅、效率低翎迁、有時(shí)間限定
? ? ? ? ? ? ? ? ? ? ?cookie不是加密的;
????????? ? ? ? ? ? 用戶可以刪除净薛;
? ? ? ? ? ? ? ? ? ? 可被篡改,可用于攻擊蒲拉;
????????????????????存儲(chǔ)量小
????????????????????明碼存儲(chǔ)
?????????對(duì)比:session (非h5) :?
? ? ? ? ? ? ? ? ? ? ? 攜帶某id碼肃拜,將其name/age類的屬性攜帶給服務(wù)器,服務(wù)器上記錄或者緩存(name/age等)雌团,緩存的東西服務(wù)器自己存上燃领,不返回給用戶,發(fā)給用戶亂碼锦援。
? ? ? ? ? ? ? ? ? ? ? 當(dāng)用戶攜帶上述亂碼猛蔽,服務(wù)器開始進(jìn)行信息比對(duì)
? ? ? ? ? 對(duì)比:session和cookie
? ? ? ? ? ? ? ? ? ? ? session到瀏覽器后,下發(fā)的是亂碼。
? ? ? ? ? ? ? ? ? ? ? session依賴cookie曼库,當(dāng)瀏覽器禁用或者清除cookie時(shí)区岗,需要重新登錄。
???2毁枯、應(yīng)用緩存與Web Workers
? ? ? ? ? ? <html? manifest = " index.appcache ">
? ? ? ? ? ? ? ? ? ?接著慈缔,在index.appcache文件中進(jìn)行設(shè)置
????????????????(CACHE? MANIFEST ????首次下載后進(jìn)行緩存)? ? ? ?
????????????????(CACHE:緩存)
????????????????(NETWORK:? 不允許緩存,需要與服務(wù)器連接)
????????????????(FALLBACK: 當(dāng)頁(yè)面無(wú)法訪問(wèn)時(shí)的回退頁(yè)面种玛,如404頁(yè)面)
ES6提供的二進(jìn)制操作:
ArrayBuffer藐鹤、TypeArray、DataView
reflow:回流赂韵。
( 瀏覽器為了重新渲染部分或整個(gè)頁(yè)面娱节,重新計(jì)算頁(yè)面元素位置和幾何結(jié)構(gòu)的進(jìn)程 )? ? ? 只要用戶行為引起了頁(yè)面上某些元素的占位面積、定位方式祭示、邊距等屬性的變化肄满,都會(huì)引起它內(nèi)部、周圍甚至整個(gè)頁(yè)面的重新渲 染绍移。所以重新計(jì)算頁(yè)面元素位置和幾何結(jié)構(gòu)就是回流
repaint:重繪悄窃。
如果只是改變某個(gè)元素的背景色、文 字顏色蹂窖、邊框顏色等等不影響它周圍或內(nèi)部布局的屬性轧抗,將只會(huì)引起瀏覽器?repaint(重繪)。
HTML5 布局標(biāo)簽:(h5的設(shè)計(jì)目的:為了在移動(dòng)設(shè)備上支持多媒體)
header瞬测、nav横媚、footer、aside月趟、article灯蝴、
hgroup、section孝宗、figure穷躁、menu(主流瀏覽器不支持)
線性漸變:
background: linear-gradient? (to bottom left , #fff , pink);
//????從右上角到左下角,左下角為#fff因妇,右上角為粉色
TCP中的RTT和RTO:
RTT问潭,客戶端到服務(wù)器往返時(shí)間。
RTO婚被,重傳超時(shí)時(shí)間狡忙。
https和http的區(qū)別:
區(qū)別:【能答對(duì)一半即可】
1. http 的URL 以http:// 開頭,https以https:// 開頭
2. http 標(biāo)準(zhǔn)端口是80 址芯,https是443
3.https 協(xié)議需要到ca申請(qǐng)證書灾茁,http不需要窜觉。
4.http 是超文本傳輸協(xié)議,信息是明文傳輸北专,https 則是具有安全性的ssl加密傳輸協(xié)議
5.http 的連接很簡(jiǎn)單,是無(wú)狀態(tài)的禀挫,https協(xié)議是由SSL+http協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議 要比http協(xié)議安全
優(yōu)點(diǎn):1. 通過(guò)證書可以更信任服務(wù)器2. 更安全逗余,防篡改
缺點(diǎn):1. https 需要證書特咆。2. 因?yàn)閷?duì)傳輸進(jìn)行加密,會(huì)一定程度增加cpu消耗录粱。3. 由于https 要還密鑰和確認(rèn)加密算法的需要腻格,所以首次建立連接會(huì)慢一些。4. 帶寬消耗會(huì)增加啥繁。
數(shù)據(jù)結(jié)構(gòu):
? 不是所有的遞歸轉(zhuǎn)化為非遞歸都要用到棧菜职。
? ?????轉(zhuǎn)化為非遞歸主要有兩種方法:
????????????????????????對(duì)于尾遞歸或單向遞歸,可以用循環(huán)結(jié)構(gòu)算法代替旗闽;????????????????
????????????????????????另外一個(gè)才是棧的方法酬核。
?? 標(biāo)準(zhǔn)ASCII編碼是(7)位編碼
?? 鏈表所需空間與線性長(zhǎng)度成正比
? 占用輔助空間最多的是:? ? ? ?歸并排序
所有簡(jiǎn)單排序(包括 希爾 )和堆排序復(fù)雜度都是0(1)??
快速排序?yàn)?(logn),要為遞歸程序執(zhí)行過(guò)程棧所需的輔助空間??
選擇排序适室,快速排序都不需要開辟額外的空間
歸并排序和基數(shù)排序所需輔助空間最多嫡意,為O(n)?
歸并排序(占用輔助空間最多)
優(yōu)點(diǎn):相比其他改進(jìn)的排序方法,只有它是穩(wěn)定的捣辆。
缺陷:歸并過(guò)程需要一定的內(nèi)存來(lái)存放歸并結(jié)果蔬螟。快速排序只有在最壞情況下汽畴,遞歸樹是不平衡的斜樹時(shí)旧巾,空間復(fù)雜度是O(n).
? 折半查找 (二分查找)
? 試用條件:( 順序方式存儲(chǔ),元素有序 )
????????????????線性表中的記錄必須按關(guān)鍵碼有序忍些;
????????????? ? 必須采用順序存儲(chǔ)鲁猩;
? 順序存儲(chǔ),隨機(jī)存劝瞻印廓握;鏈?zhǔn)酱鎯?chǔ),順序存取嘁酿。
?? 幀中繼的設(shè)計(jì)主要是以廣域網(wǎng)互連為目標(biāo)
jQuery遍歷:
.webp是谷歌新推出的一種圖片格式疾棵,可以讓網(wǎng)頁(yè)圖片有效進(jìn)行壓縮,不影響清晰度和兼容性痹仙。加快網(wǎng)頁(yè)下載速度
適用于:Webkit內(nèi)核。殉了。开仰。
build中的屬性‘modernizr’,檢測(cè)用戶瀏覽器是否支持html5或css某特性的js庫(kù)。
值類型何和引用類型:(內(nèi)存)
值類型一個(gè)數(shù)據(jù)一塊內(nèi)存众弓;
引用類型只存儲(chǔ)一個(gè)對(duì)象恩溅,其他的變量存儲(chǔ)的是指針,并指向該對(duì)象谓娃。(對(duì)象 脚乡、? 數(shù)組 、? 函數(shù))
typeof 只能檢測(cè)值類型滨达,不能檢測(cè)出引用類型奶稠,因?yàn)榻Y(jié)果都是‘object’,除了函數(shù)外捡遍。
變量計(jì)算:(強(qiáng)制類型轉(zhuǎn)換)
1.const定義的變量不可以修改锌订,而且必須初始化。
2.var定義的變量可以修改画株,如果不初始化會(huì)輸出undefined辆飘,不會(huì)報(bào)錯(cuò)。
3.let是塊級(jí)作用域谓传,函數(shù)內(nèi)部使用let定義后蜈项,對(duì)函數(shù)外部無(wú)影響。