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