JavaScript-window對象常用屬性及方法有哪些?

2020-12-21 尚學堂前端學院

本節主要內容:

BOM的概念window對象提示框間隔調用和延遲調用學習目標:

一、BOM的概念

1.1 什麼是BOM?

BOM:Browser Object Model 是瀏覽器對象模型,BOM由多個對象構成,其中代表瀏覽器窗口的window對象是BOM的頂層對象也是核心對象,其他對象都是該對象的子對象。

1.2 BOM包含哪些內容?

瀏覽器介紹BOM對象包含(1)window 對象,是 JS 的最頂層對象,其他的 BOM 對象都是 window 對象的屬性。

(2)document 對象,文檔對象;

(3)location 對象,瀏覽器當前URL信息;

(4)navigator 對象,瀏覽器本身信息;

(5)screen 對象,客戶端屏幕信息;

(6)history 對象,瀏覽器訪問歷史信息;

在瀏覽器中,window對象有雙重角色,它既是通過javascript訪問瀏覽器窗口的一個接口,又是ECMAScript規定的Global對象。

所有 JavaScript 全局對象、函數以及變量均自動成為 window 對象的成員。

全局變量是 window 對象的屬性。

全局函數是 window 對象的方法。

1.3 BOM和DOM的關係

(1)DOM通過document對象來訪問、控制、修改html和xhtml等文檔中的內容

(2)BOM通過 window 對象來訪問、控制、修改瀏覽器中的內容

聯繫:BOM包含DOM。區別:DOM描述了處理網頁內容的方法和接口,即操作頁面內部

BOM描述了與瀏覽器進行交互的方法和接口,即操作頁面之間

二、window對象

所有瀏覽器都支持 window 對象。它表示瀏覽器窗口。

所有 JavaScript 全局對象、函數以及變量均自動成為 window 對象的成員。

全局變量是 window 對象的屬性。

全局函數是 window 對象的方法。

2.1 window對象

因為window對象是js中的頂級對象,因此所有定義在全局作用域中的變量、函數都會變成window對象的屬性和方法,在調用的時候可以省略window。

例如:

打開窗口 window.open(url); 【等價於open(url);】

關閉窗口 window.close(); 【等價於close();】

獲取事件 window.event 【等價於event;】

獲取文檔 window.document 【等價於document】

2.2 window對象中常用的屬性

2.2.1 window.name

屬性:

window.name是window對象的一個屬性,默認值為空。

特性:

window.name值在不同的頁面(甚至不同域名)加載後依舊存在,

並且可以支持非常長的name值(2MB左右)

2.2.2瀏覽器距離屏幕的距離

window.screenX

window.screenY

2.2.3 window尺寸屬性

outerHeight屬性設置或返回一個窗口的外部高度,包括所有界面元素(如工具欄/滾動條)。

outerWidth屬性設置或返回窗口的外部寬度,包括所有的界面元素(如工具欄/滾動條)。

innerheight 返回窗口的文檔顯示區的高度。

innerwidth 返回窗口的文檔顯示區的寬度。

2.2.4 document對象

2.2.4 window.navigator對象

window.navigator對象包含大量有關Web瀏覽器的信息,在檢測瀏覽器及作業系統上非常有用。(這個對象和event一樣是一個全局變量,並且是唯一的)

navigator.appCodeName //瀏覽器代碼名的字符串表示

navigator.appName //官方瀏覽器名的字符串表示

navigator.appVersion //瀏覽器版本信息的字符串表示

navigator.userAgent //返回和瀏覽器內核相關的信息

navigator.cookieEnabled //如果啟用cookie返回true,否則返回false

navigator.javaEnabled() //如果啟用java返回true,否則返回false

navigator.platform //瀏覽器所在計算機平臺的字符串表示

navigator.plugins //安裝在瀏覽器中的插件數組

ps:如果window.navigator.userAgent出現了Mobile,可以確定用戶使用的是行動裝置。

2.2.5 Location 對象

location.hostname 返回 web 主機的域名location.pathname 返回當前頁面的路徑和文件名location.port 返回 web 主機的埠 (80 或 443)location.protocol 返回所使用的 web 協議(http: 或 https:)

search 屬性是一個可讀可寫的字符串,可設置或返回當前 URL 的查詢部分(問號 ? 之後的部分)

2.2.6 screen對象

2.3 window對象中常用的方法

2.5 實例:三級聯動菜單

三、提示框

3.1警告框

3.2 輸入框

prompt(alertMsg,defaultMsg);

表示警示框,作用是提示用戶信息,該方法執行後根據情況不同返回值略有不同。

a)點擊取消,返回值為null

b)沒有默認值

如果用戶沒有輸入內容,返回一個空字符串

如果用戶輸入了內容,返回值為用戶輸入的內容

c)有默認值

如果用戶沒有輸入內容,返回默認值

如果用戶修改了默認,返回值為用戶輸入的內容

3.3 確認框

3.4 實例:自定義右鍵菜單

3.5 實例:放大鏡效果

四、間隔調用和延遲調用

4.1 定時器

setInterval(表達式,毫秒數)

語法:var timer = null;

timer = setInterval(需要執行的函數,執行間隔時間ms);

例如:var timer = null;

timer = setInterval(function(){

console.log('hello world!');

},2000);

總結說明:

要把定時器下邊的任務執行完畢後 才會去執行定時器的內容定時執行中this指向window每創建一個定時器 就會有一個唯一的id被返回 id從開始 之後累加

4.清除定時器時 不僅可以使用變量 也可以使用唯一Id清除

5.當定時執行的函數是包含參數時 則應該 將函數和參數 使用引號包裹起來

首先明確兩點:

1.JS 執行機制是單線程。

2.JS的Event loop是JS的執行機制

按照這種的分類方式JS的執行機制是:

異步的編程思想:

首先,判斷JS是同步還是異步,同步進入主線程,異步進入Event table

其次,異步任務在Event table中註冊函數,當滿足特定的條件,被推入Event queue(消息隊列)最後,同步任務進入主線程後一直執行,直到主線程空閒後,才會去Event queue中查看是否有可執行的異步任務,如果有就推入主線程中執行。

清除間隔調用

既然間隔調用每隔一段時間就會自動執行一次,那麼清除間隔調用就勢必存在。

語法:clearInterval(變量標識)

例如:clearInterval(timer);

上述代碼就能夠將剛剛創建的定時器移除掉,令其不在間隔一段時間後自動再次執行。

注意:

(1)間隔調用的返回值是一個數字隊列,因此通過訪問數字隊列來清除間隔調用也被允許。

注意:

(2) 如果間隔調用的函數需要傳入參數,則間隔調用需要使用如下的方式聲明

語法:var timer = null;

timer = setInterval(字符串,執行間隔事件ms);

例如:var timer = null;

function show(words){console.log(words);}

timer = setInterval('show("hello world!")',2000);

(3) 間隔調用不是立即執行,而是在【任務隊列中的任務完成後】才執行間隔調用

(4) 因為間隔調用函數的實際執行者是window,因此間隔調用內部的this指向window

4.2 延時器

延遲調用又叫延遲調用函數。是一種能夠等待一定時間後在執行的函數。

語法:var timer = null;

timer = setTimeout(需要執行的函數,等待的時間);

例如:var wait = null;

wait = setTimeout(function(){

console.log('hello world!');

},2000);

根據語法所述,上述代碼所表示的含義為:等待2s後列印一句【hello world!】

注意:延遲調用除了在語法上和間隔調用略有不同外,其餘語法均相同。

(1)閱讀下列代碼,口算列印結果

setInterval(function () {console.log(1111);},0);setTimeout(function () {console.log(2222);},0);(2)閱讀下列代碼,口算列印結果

var div = document.getElementsByTagName("div").item(0); div.onclick = function () { setTimeout(function () {console.log(this);}, 1000); };

4.4 實例:時間走動

4.5 實例:倒計時

4.6 實例:進度條的加載

本文由尚學堂前端學院原創,歡迎關注,帶你一起學習Web前端知識!

相關焦點

  • 如何在javascript中創建一個對象?
    javascript是一門基於對象而不是面向對象的語言,由於它的這個缺陷,在javascript中實現面向對象時十分彆扭,就比如創建對象,由於在ES6之前沒有class關鍵字,想要創建對象必須依賴以下幾種間接方式。
  • JavaScript:對象都是這樣生成的!
    通過構造函數生成實例對象時,會自動為實例對象分配原型對象。每一個構造函數都有一個 prototype 屬性,這個屬性就是實例對象的原型對象。原型對象的屬性不是實例對象自身的屬性。只要修改原型對象,變動就立刻會體現在所有實例對象上。由於原型本身也是對象,又有自己的原型,所以形成了一條原型鏈(prototype chain)。
  • JavaScript瀏覽器對象,Location對象
    1.Location對象:window.location 對象用於獲得當前頁面的地址(URL),並把瀏覽器重定向到新的頁面。2.Location對象的屬性:location.hostname 返回web主機的域名location.pathname 返回當前頁面的路徑和文件名location.port 返回web主機的埠號
  • 什麼是JavaScript對象?如何創建並引用?這就告訴你!
    js 中我們包含哪些對象呢?內置對象(本地對象):Math對象,Number對象,Date對象等,系統給我們提供好的,我們拿過來用就可以了。宿主對象:dom(文檔對象模型),bom(瀏覽器對象)。ps:JavaScript的保留字可以不加引號直接當作對象的屬性。3.2關於鍵值鍵值是屬性所對應的具體的值。javascript的對象的鍵值可以是任何數據類型。
  • 20個常用的JavaScript簡寫技巧
    多條件檢查 對於多個值匹配,我們可以將所有的值放到數組中,然後使用或方法。 11. 對象屬性複製 如果變量名和對象的屬性名相同,那麼我們只需要在對象語句中聲明變量名,而不是同時聲明鍵和值。JavaScript 會自動將鍵作為變量的名,將值作為變量的值。
  • 【VBA】Range對象的常用方法屬性(一)
    在EXCEL中,我們無論怎麼去處理數據,最後都離不開單元格,那麼作為最常用的對象Range,我們肯定少不了接觸關於他的方法和屬性。
  • 第六篇:DOM對象與Document
    DOM對象概述DOM是一套Web標準,它定義了訪問HTML文檔對象的一套屬性、方法和事件,DOM實際上是建立網頁與JavaScript語言溝通的橋梁。對象模型結構DOM的英文全稱是Document Object Model,即文檔對象模型。
  • JavaScript基礎關於對象相關的必看詳解
    事物的特徵,在對象中用屬性來表示 ,事物的行為,在對象中用方法來表示>我們是利用 等號 = 賦值的方法 添加對象的屬性和方法 ,每個屬性和方法之間用 分號結束訪問對象的屬性的方法:1.對象裡面的屬性調用 : 對象.屬性名2.對象裡面屬性的另一種調用方式 : 對象[『屬性名』],注意方括號裡面的屬性必須加引號3.調用對象的方法 一般用對象名.方法名() 千萬別忘記添加小括號的方式
  • 幾個非常有意思的javascript知識點總結
    配置屬性 IntersectionObserver實例的第二個參數,用來配置監聽屬性,具體有以下三個屬性:root 所監聽對象的具體祖先元素(element)。如果未傳入值或值為null,則默認使用頂級文檔的視窗。
  • [JavaScript]部分常用JavaScript代碼(1)
    事件源對象 event.srcElement.tagName event.srcElement.type 捕獲釋放
  • VBA入門:說說對象、方法和屬性
    有時候我們看到很多人在說:對象,屬性,方法balabala,那這些東西到底是個什麼?Ø 什麼是對象隨風說:具有自己特定性格的物體就是對象舉例來說:芬子女神身高,有膚色,有性別,那麼芬子女神就是對象(不過不是你的)單元格有行高,列寬,顏色,字體等等…那麼單元格就是一個對象。
  • javascript入門到進階-js系列六:執行上下文
    所以在一個javascript程序中,必定會出現多種不同的執行上下文。javascript是一個單線程語言,這意味著在瀏覽器中同時只能做一件事情。當javascript解釋器初始執行代碼,它首先默認進入全局上下文。每次調用一個函數將會創建一個新的執行上下文。每次新創建的一個執行上下文會被添加到作用域鏈的頂部,有時也稱為執行或調用棧。
  • 什麼是javascript?javascript需要學哪些內容?這篇文章告訴你!
    var name = 'muzidigbig';//顯示聲明 name = 'muzidigbig';//隱式聲明(為全局對象(window)的一個屬性)剩餘可以是任意字母,美元符號,下劃線和數字(3)不能使用javascript中的關鍵字(保留字)來命名變量(4)中文也可以聲明變量,不建議使用它。
  • 第一篇:JavaScript基本語法
    <script>標籤的type屬性表示腳本語言是javascript。<script>標籤可放置在HTML 頁面的<body>或者<head>標籤內。例如:document對象就是瀏覽器提供的對象,它可以讓開發人員通過JS腳本,操作 HTML 頁面中的所有元素。
  • 如何使用JavaScript實現前端導入和導出excel文件
    由於我們採用antd的table組件來渲染數據, 所以我們需要手動將解析出來的數據轉換成table支持的數據格式.大致流程如下: 所以我們需要做的就是將Upload得到的文件數據傳給xlsx, 由xlsx生成解析對象, 最後我們利用javascript算法將xlsx的對象處理成ant-table支持的數據格式即可.
  • QML對象屬性
    每個QML對象類型都有一些屬性。當創建對象類型的實例時,這些屬性就會被自動創建出來。您甚至可以定義一些自己的屬性。除枚舉屬性外,所有屬性都以小寫字母或下劃線開頭,並且不能包含字母,數字和下劃線以外的字符。
  • SpringMVC常用註解及使用方法匯總
    簡述本文主要介紹SpringMVC常用註解及使用方法匯總。常用註解有哪些呢?@Controller@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象。分發處理器將會掃描使用了該註解的類的方法,並檢測該方法是否使用了@RequestMapping 註解。
  • Python--- 對象的屬性
    (object),每個對象都可能有多個屬性(attribute)。Python的屬性有一套統一的管理方案。屬性的__dict__系統對象的屬性可能來自於其類定義,叫做類屬性(class attribute)。類屬性可能來自類定義自身,也可能根據類定義繼承來的。一個對象的屬性還可能是該對象實例定義的,叫做對象屬性(object attribute)。對象的屬性儲存在對象的__dict__屬性中。
  • 面向對象編程:原生javascript實現一個支持過期時間的DAO庫
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文主要解決原生localStorage無法設置過期時間的問題,並通過封裝,來實現一個操作便捷,功能強大的localStorage庫,關於庫封裝的一些基本思路和模式,我將採用之前寫的如何用不到200行代碼寫一款屬於自己的js類庫中類似的方法
  • 笛卡爾乘積的javascript版實現和應用
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡尓積,又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員 。