-
CSSOM樹
查看全部 -
null轉(zhuǎn)成數(shù)字是0,undefined轉(zhuǎn)成數(shù)字并不是0,而是NaN。
null == undefined 并不是因為都被轉(zhuǎn)成了0,而是因為它們兩個都代表“沒有”,所以ECMAScript文檔里面特殊規(guī)定了它們是寬松相等的
查看全部 -
instanceof返回布爾值:true/false;
a instanceof b? // a對象是否是b實例化后的,instanceof是根據(jù)原型鏈進行檢測的;
與typeof的區(qū)別:
1》輸出結(jié)果不同,typeof輸出數(shù)據(jù)類型(少了null,多了function,object判定方式根據(jù)是否有【call】,有call檢測為function,無為object),instanceof輸出布爾值
2》typeof監(jiān)測引用類型為object,不準確
查看全部 -
數(shù)據(jù)類型:
基礎:undefined?null?number?string?boolean 引用:object
typeof(null) 為什么是object 不是null?
使用typeof檢測是通過鑒別機器碼后三位判斷:000位object,null的機器碼為000000
new實例化獲得的對象開辟堆空間,類型屬于object;
查看全部 -
深淺拷貝
遍歷賦值
Object.create()
JSON.parse() 和JSON.stringify()
跟著變的是 淺拷貝, 沒變是深拷貝。
查看全部 -
array.sort 是根據(jù)unicode碼表來排序的,0-9,a-z 漢字。
解決數(shù)字排序方案:傳一個比較函數(shù)進去function (x, y) { return x-y }
查看全部 -
cewfcqwc
查看全部 -
NaN,0,undefined,null // false,用boolean轉(zhuǎn)換
== 會有隱式轉(zhuǎn)換,轉(zhuǎn)成number的形式
=== 不會進行隱式轉(zhuǎn)換
IEEE754 標準
二進制轉(zhuǎn)十進制的時候精度丟失
0.1? + 0.2? // 0.30000000000000004
方案1:toFixed()
方案2:? n = Math.pow(10, x); (0.1 *n + 0.2 * n) /n 即可
sort?
function sort(a, b) { return a - b; } // 升序排序,
a - b < 0 a移到b的前面
a - b = 0 位置不變
a - b > 0 a移到b的后面
new Date().getTime() // 毫秒數(shù)
new Date().getDay() // 本周的第幾天, 1-7
new Date().getDate() // 本月幾號
new Date().getMonth() // 第幾月,0-11查看全部 -
繼承
繼承的6種方式:
簡單原型鏈:類式繼承
借用構造函數(shù):缺點=父類的原型方法自然不會被子類繼承
組合繼承:類式繼承+構造函數(shù)繼承
寄生組合繼承:跟類式繼承一樣,父類對象中的值類型的屬性被復制,引用類型的屬性被共有
原型式寄生式:通過在一個函數(shù)內(nèi)的過度對象實現(xiàn)繼承并返回新對象的方式查看全部 -
匿名函數(shù):節(jié)約內(nèi)存空間,調(diào)用前和調(diào)用后內(nèi)存中不創(chuàng)建任何函數(shù)對象
回調(diào)函數(shù):將一個函數(shù)作為對象交給其他函數(shù)使用
遞歸函數(shù):循環(huán)的調(diào)用函數(shù)本身
構造函數(shù):用來新建對象
變量對象:VO variable object 一般是全局環(huán)境下保存變量的對象
活動對象:AO activation object,函數(shù)的執(zhí)行環(huán)境是在調(diào)用時創(chuàng)建的,該對象代替VO對象來保存當前函數(shù)環(huán)境中的變量,參數(shù),函數(shù),所以在函數(shù)執(zhí)行環(huán)境中的VO就是AO
重載:在程序中可以定義相同名字,不同參數(shù)的形式的不同函數(shù),函數(shù)在調(diào)用的函數(shù)的時候,自動識別不同參數(shù)對應的函數(shù),實現(xiàn)相同函數(shù)名不同的函數(shù)調(diào)用,js沒有重載,但是可以通過arguments實現(xiàn)函數(shù)重載
多態(tài):同個東西在不同情況下的表現(xiàn)不同狀態(tài),重寫和重載
局部函數(shù),this指向window查看全部 -
html事件:在html標簽綁定事件
dom0事件:事件綁定,用js綁定
dom2事件:事件監(jiān)聽,addeventListenor(事件名,觸發(fā)函數(shù),是否是冒泡)/attaEvent,綁定多個事件
原因:js事件不支持事件重載,綁定事件相當于一個變量存儲的是函數(shù)的地址,如果在綁定一個事件,相當于變量指向另一個函數(shù)的地址;事件監(jiān)聽相當于訂閱發(fā)布者,改變了數(shù)據(jù),觸發(fā)了事件,訂閱這個事件的函數(shù)被執(zhí)行
事件對象:事件觸發(fā)時候自動創(chuàng)建的,封裝了事件發(fā)生的元素和屬性信息,即event查看全部 -
DOM樹加載的過程:
1 url,DNS域名解析,找到IP,向服務器發(fā)起請求
2 在服務器返回數(shù)據(jù),瀏覽器接收文件(html、css、js...),二進制文件
? html:二進制轉(zhuǎn)換為html
? 構建DOM樹,HTML解析器
? ? ? ?Tocken->Node->DOM? ? ? ?Tocken詞法解析,根是“document”對象
? ? ? ?Node:HTMLDivElement
? ? ? ?DOM:DOM和標簽基本是一一對應的關系
? ?解析過程:
? ? ? ?1 遇到link的外部css,遇到css的代碼會進行css的加載,并行
? ? ? ?2 遇到script標簽,會先去執(zhí)行js的內(nèi)容,直至腳本完成執(zhí)行,然后繼續(xù)構建DOM;
? ? ? ? ?底部引入js的原因,或者在頭部引用,需加上async、defer,或者window.onload:
? ? ? ? ?解析器遇到設置了async的script時,開始下載腳本并繼續(xù)解析文檔,腳本會在它下載完成后盡快執(zhí)行,但是解析器不會停下來等它下載
? ? ? ? ?如果script標簽設置了該屬性,則瀏覽器會在異步的下載該文件并且不會影響后續(xù)DOM的渲染;
? ? ? ? 如果有多個設置了defer的script標簽存在,則會按照書訊執(zhí)行所有的script
? ? ? ? defer腳本會在文檔渲染完畢后,DOMContentLoaded事件調(diào)用前執(zhí)行;腳本會被延遲到整個頁面解析完畢后在運行
3 構建CSS樹:CSS解析器
? ? ? ? 每個css文件解析為樣式表對象cssstylesheet,每個對象都包含CSSRule;CSSRule包含選擇器和聲明對象,已經(jīng)其他與CSS語法對應的對象
? ? ? ? Tocken解析:css語法及語法文法
? ? ? ? Node->CSSOM4 構建render樹,渲染樹=DOM樹+css樹
5 布局layout與繪制paint:計算對象之間的大小,距離確定每個節(jié)點在屏幕上的確切坐標,映射瀏覽器屏幕的繪制;使用UI后端層繪制每個節(jié)點
? reflow(回流):當元素屬性發(fā)生變化且影響布局時(寬度、高度、內(nèi)外邊距等),產(chǎn)生回流,相當于刷新頁面
? repaint(重繪):當元素屬性發(fā)生改變且不影響布局時(背景顏色、透明度、字體樣式等),產(chǎn)生重繪不一定引起回流,回流必將引起重繪查看全部 -
測試一下筆記
查看全部 -
typeof:返回object,null,function,undefiend
instanceof:檢測布爾值,Triue OR false
查看全部 -
<script>
//作用域scope:一個變量的可用范圍;{a:1】}}
//作用域鏈scope chain:以當前作用域的scope屬性為起點依次引用每個A0,直到window結(jié)束,形成多級引用關系
//js作用域:ES5
//兩大類:全局作用域、函數(shù)作用域
//解釋執(zhí)行,在執(zhí)行過程中,JavaScript引擎是嚴格按著作用域機制(scope)來執(zhí)行的,并且Javascript的變量
和函數(shù)作用域是在定義時決定的,而不是執(zhí)行時決定的。JavaScript中的變量作用域在函數(shù)體內(nèi)有效,無塊作用域
查看全部
舉報