Window對象
BOM:瀏覽器對象模型
定時器-延時函數
JavaScript內置的一個用來讓代碼延遲執行的函數,setTimeout
setTimeout(回調函數,等待的毫秒數);
setTimeout僅僅只執行依次,所以可以理解為就是把一段代碼延遲執行,平時省略window
清除延遲函數:
let timer = setTimeout(回調函數,等待的毫秒數);
clearTimeout(timer);
兩種定時器的對比
執行次數
- 延時函數:執行一次
- 間歇函數:每隔一段時間就執行一次,除非手動清除
JS執行機制
JavaScript 語言的一大特點就是單線程,也就是說,同一時間只能做一件事情
這是因為Javascript 這門腳本語言誕生的使命所致一avaScript 是為處理頁面中用戶的交互,以及操作
DOM 而誕生的。比如我們對某個 DOM 元素進行添加和刪除操作,不能同時進行。應該先進行添加,之后再刪除。
單線程就意味著,所有任務需要排隊,前一個任務結束,才會執行后一個任務。這樣所導致的問題是: 如
果JS 執行的時間過長,這樣就會造成頁面的渲染不連貫,導致頁面渲染加載阻塞的感覺。
為了解決這個問題,利用多核CPU的計算能力,HTML5提出了WebWorker標準,允許JavaScript腳本創建多個線程,于是,JS中出現了同步和異步
執行過程:先執行執行棧中的同步任務,異步任務放入到任務隊列中,同步任務執行完畢后再去隊列中執行任務隊列任務
事件循環(event loop)
location對象
location的數據類型時對象,它拆分并保存了URL地址的各個組成部分
常用屬性和方法:
href 屬性獲取完成的URL地址,對其賦值時用于地址的跳轉
location.herf='https://www.baidu.com';
search屬性獲取地址中攜帶的參數,符號?后面部分
location.search
hash屬性獲取地址中的哈希值,符號#后面部分
baidu.com#/my
location.hash // #/my
reload():刷新當前頁面,傳入參數true時,表示強制刷新
//點擊按鈕,刷新頁面
let btn = document.querySelect('button');
btn.addEventListener('click',function(){location.reload(true);//傳入參數true 強制刷新頁面(類似于ctrl+F5)
})
navigator對象
數據類型時對象,該對象下記錄了瀏覽器自身的相關信息
常用屬性和方法
通過userAgent屬性檢測瀏覽器的版本及平臺
檢測瀏覽器信息:
!(function(){const userAgent = navigator.userAgent;const android = userAgent.match(/(Android);?([¥s¥/]+[¥d.]+)?/);const iphone = userAgent.match(/(iPhone¥sOS)¥s([¥d_]+)/);if(android || iphone){location.href='http://m.itcast.cn';}
})();
histroy對象
histroy的數據類型是對象,主要管理歷史記錄,該對象與瀏覽器地址欄的操作相對應,如前進,后退,歷史記錄等等
常用的屬性和方法:
hostroy對象方法 | 作用 |
---|---|
back() | 可以后退功能 |
forward() | 前進功能 |
go(參數) | 前進或后退功能(1:前進一個頁面,-1:后退一個頁面) |