一、BOM(瀏覽器對象模型)
window對象是一個全局對象,也可以說是JavaScript中的頂級對象。
像document、alert()、console.log()這些都是window的屬性,基本BOM的屬性和方法都是window的。
所有通過var定義在全局作用域中的變量、函數都會變成window對象的屬性和方法。
window對象下的屬性和方法調用的時候可以省略window。
二、定時器 - 延時函數
JS中內置的一個用來讓代碼延遲執行的函數,叫setTimeout。
setTimeout僅僅只執行一次,所以可以理解為就是把一段代碼延遲執行,平時省略window。
清除延時函數:
例子:5秒鐘之后廣告自動消失
三、JS執行機制
JavaScript 語言的一大特點就是單線程,也就是說,同一個時間只能做一件事。
這是因為Javascript 這門腳本語言誕生的使命所致。javaScript 是為處理頁面中用戶的交互,以及操作DOM 而誕生的。比如我們對某個 DOM 元素進行添加和刪除操作,不能同時進行。應該先進行添加,之后再刪除。
單線程就意味著,所有任務需要排隊,前一個任務結束,才會執行后一個任務。這樣所導致的問題是: 如果 JS?執行的時間過長,這樣就會造成頁面的渲染不連貫,導致頁面渲染加載阻塞的感覺。
1、先執行執行棧中的同步任務。
2、異步任務放入任務隊列中。
3、一旦執行棧中的所有同步任務執行完畢,系統就會按次序讀取任務隊列中的異步任務,于是被讀取的異步任務結束等待狀態,進入執行棧,開始執行。
由于主線程不斷的重復獲得任務、執行任務、再獲取任務、再執行,所以這種機制被稱為事件循環(event loop)。
四、location對象
location的數據類型是對象,它拆分并保存了URL地址的各個組成部分。
常用屬性和方法:
herf屬性獲取完整的URL地址,對其賦值時用于地址的跳轉。
例子:5秒鐘后自動跳轉頁面
search屬性獲取地址中攜帶的參數,網址的符號?后面部分。
hash屬性獲取地址中的哈希值,網址的符號#后面的部分
reload方法用來刷新當前頁面,傳入參數true時表示強制刷新。
五、navigator對象
navigator的數據類型是對象,該對象下記錄了瀏覽器自身的相關信息。
常用屬性和方法:
通過userAgent檢測瀏覽器的版本及平臺
六、history對象
history的數據類型是對象,主要管理歷史記錄,該對象與瀏覽器地址欄的操作相對應,如前進、后退、歷史記錄等。
常用屬性和方法:
history對象一般在實際開發中比較少用,但是會在一些OA辦公系統中見到。