亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

DOM中事件處理程序的第一個(gè)參數(shù)?

Cciradih / 3301人閱讀

摘要:上面代碼,使用級(jí)的方法為按鈕綁定了一個(gè)沒(méi)有指定任何參數(shù)的事件處理程序,點(diǎn)擊按鈕后,控制臺(tái)依次輸出。從結(jié)果可以看出,瀏覽器確實(shí)將一個(gè)事件對(duì)象傳入到事件處理程序,即便事件處理程序沒(méi)有指定任何參數(shù)。

我們知道,在觸發(fā)DOM上的某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象,其中包含與事件相關(guān)的所有信息。JS高程中有這樣一句話,兼容DOM的瀏覽器會(huì)將一個(gè)事件對(duì)象傳入到事件處理程序中,無(wú)論指定事件處理程序時(shí)使用什么方法,DOM0級(jí)或是DOM2級(jí)別,都會(huì)傳入事件對(duì)象。

事件處理程序有參數(shù)時(shí)直覺(jué)上還好理解,但是事件處理程序要是一個(gè)參數(shù)都沒(méi)有指定,事件對(duì)象真的會(huì)傳入事件處理程序嗎?
以一個(gè)按鈕為樣本,我們可以看看是否真的如此。

var btn = document.getElementById("myBtn");
function showMessage() {
  console.log("Clicked");
  console.log(arguments.length);
  console.log(arguments[0].type);
}
btn.onclick = showMessage;

上面代碼,使用DOM0級(jí)的方法為按鈕myBtn綁定了一個(gè)沒(méi)有指定任何參數(shù)的事件處理程序,點(diǎn)擊按鈕后,控制臺(tái)依次輸出Clicked、1click。arguments對(duì)象是一個(gè)類數(shù)組對(duì)象,包含著傳入函數(shù)中的所有參數(shù),利用它,我們可以獲得關(guān)于參數(shù)的信息。從結(jié)果可以看出,瀏覽器確實(shí)將一個(gè)事件對(duì)象傳入到事件處理程序,即便事件處理程序沒(méi)有指定任何參數(shù)。
下面,看看事件處理程序指定參數(shù)的情況。

var btn = document.getElementById("myBtn");
function showMessage(event) {
  console.log("Clicked");
  console.log(arguments.length);
  console.log(arguments[0] === event);
  console.log(event.type);
}
btn.onclick = showMessage;

點(diǎn)擊按鈕后,控制臺(tái)依次輸出Clicked、1true、click。從結(jié)果可以得出,傳入一個(gè)參數(shù)時(shí),該參數(shù)名成為arguments[0]的別名,參數(shù)和arguments[0]指向同一個(gè)對(duì)象。因?yàn)槭莿e名,所以傳入的參數(shù)名可以是任何合法的標(biāo)識(shí)符,之所以使用標(biāo)識(shí)符event,是因?yàn)樗鼙硪?,也是大家默認(rèn)的習(xí)慣。
現(xiàn)在,可以得出結(jié)論了,無(wú)論指定事件處理程序時(shí)使用什么方法,事件處理程序始終有一個(gè)參數(shù),也就是事件對(duì)象,由瀏覽器傳入,保存在arguments[0]。

參考資料

JavaScript高級(jí)程序設(shè)計(jì)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95653.html

相關(guān)文章

  • DOM 事件深入淺出(一)

    摘要:本文就將帶大家深入淺出地了解事件的那些屬性和方法。針對(duì)不同級(jí)別的,我們的事件處理方式也是不一樣的。當(dāng)然其優(yōu)點(diǎn)是不需要操作來(lái)完成事件的綁定。文章地址事件深入淺出二。 在項(xiàng)目開(kāi)發(fā)時(shí),我們時(shí)常需要考慮用戶在使用產(chǎn)品時(shí)產(chǎn)生的各種各樣的交互事件,比如鼠標(biāo)點(diǎn)擊事件、敲擊鍵盤事件等。這樣的事件行為都是前端DOM事件的組成部分,不同的DOM事件會(huì)有不同的觸發(fā)條件和觸發(fā)效果。本文就將帶大家深入淺出地了解...

    macg0406 評(píng)論0 收藏0
  • 【重溫基礎(chǔ)】20.事件

    摘要:本文是重溫基礎(chǔ)系列文章的第二十篇。事件捕獲為截獲事件提供機(jī)會(huì),然后實(shí)際的目標(biāo)接收到事件,最后事件冒泡,對(duì)事件作出響應(yīng)。事件處理事件處理,即響應(yīng)某個(gè)事件。包括導(dǎo)致事件的元素事件類型等其他信息。 本文是 重溫基礎(chǔ) 系列文章的第二十篇。 這是第三個(gè)基礎(chǔ)系列的第一篇,歡迎持續(xù)關(guān)注呀! 重溫基礎(chǔ) 系列的【初級(jí)】和【中級(jí)】的文章,已經(jīng)統(tǒng)一整理到我的【Cute-JavaScript】的Java...

    Blackjun 評(píng)論0 收藏0
  • DOM事件流與事件委托

    摘要:事件流與事件委托事件,即文檔或?yàn)g覽器中發(fā)生的一些特定交互的瞬間,我們可以利用事件監(jiān)聽(tīng)來(lái)預(yù)定事件,當(dāng)事件發(fā)生的時(shí)候執(zhí)行相應(yīng)的處理程序。本文主要討論事件流的三個(gè)階段,及利用事件委托機(jī)制進(jìn)行性能優(yōu)化。 事件流與事件委托 事件,即文檔或?yàn)g覽器中發(fā)生的一些特定交互的瞬間,我們可以利用事件監(jiān)聽(tīng)來(lái)預(yù)定事件,當(dāng)事件發(fā)生的時(shí)候執(zhí)行相應(yīng)的處理程序。當(dāng)事件發(fā)生在某個(gè)DOM節(jié)點(diǎn)上時(shí),事件在DOM結(jié)構(gòu)中進(jìn)行一級(jí)...

    chaos_G 評(píng)論0 收藏0
  • 前端小知識(shí)--JavaScript事件

    摘要:事件事件指可以被偵測(cè)到的行為。事件通常與函數(shù)配合使用,當(dāng)事件發(fā)生時(shí)函數(shù)才會(huì)執(zhí)行。兩家公司對(duì)于事件流出現(xiàn)了截然相反的定義。級(jí)事件規(guī)定的事件流包括三個(gè)階段事件捕獲階段處于目標(biāo)階段事件冒泡階段。我們又把事件處理程序稱為事件偵聽(tīng)器。 JavaScript事件流 0.DOM級(jí)別與DOM事件 首先在介紹DOM事件之前我們先來(lái)認(rèn)識(shí)下DOM的不同級(jí)別。針對(duì)不同級(jí)別的DOM,我們的DOM事件處理方式也是...

    Taste 評(píng)論0 收藏0
  • Event Handler 事件處理程序 1 ---《高程3》

    摘要:為屬性賦值匿名函數(shù)事件作用域使用級(jí)方法指定的事件處理程序被認(rèn)為是元素的方法。最后這個(gè)布爾值參數(shù)如果是,表示在捕獲階段調(diào)用事件處理程序如果是,表示在冒泡階段調(diào)用事件處理程序。 事件捕獲和事件冒泡 DOM2級(jí)事件規(guī)定的事件流包括三個(gè)階段:事件捕獲、處于目標(biāo)階段和事件冒泡。首先發(fā)生的是事件捕獲,從外部節(jié)點(diǎn)到內(nèi)部節(jié)點(diǎn)依次遍歷,為截獲事件提供了機(jī)會(huì)。然后是實(shí)際的目標(biāo)接收到事件。最后一個(gè)階段是冒泡...

    WalkerXu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<