DOM中事宜處置懲罰順序的第一個參數?

我們曉得,在觸發DOM上的某個事宜時,會發生一個事宜對象,个中包括與事宜相干的一切信息。JS高程中有如許一句話,兼容DOM的瀏覽器會將一個事宜對象傳入到事宜處置懲罰順序中,不管指定事宜處置懲罰順序時運用什麼要領,DOM0級或是DOM2級別,都邑傳入事宜對象。

事宜處置懲罰順序有參數時直覺上還好明白,然則事宜處置懲罰順序如果一個參數都沒有指定,事宜對象真的會傳入事宜處置懲罰順序嗎?
以一個按鈕<input type="button" value="Click Me" id="myBtn">為樣本,我們能夠看看是不是真的云云。

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

上面代碼,運用DOM0級的要領為按鈕myBtn綁定了一個沒有指定任何參數的事宜處置懲罰順序,點擊按鈕后,控制台順次輸出Clicked1clickarguments對象是一個類數組對象,包括着傳入函數中的一切參數,利用它,我們能夠獲得關於參數的信息。從效果能夠看出,瀏覽器確實將一個事宜對象傳入到事宜處置懲罰順序,即使事宜處置懲罰順序沒有指定任何參數。
下面,看看事宜處置懲罰順序指定參數的狀況。

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;

點擊按鈕后,控制台順次輸出Clicked1trueclick。從效果能夠得出,傳入一個參數時,該參數名成為arguments[0]的別號,參數和arguments[0]指向同一個對象。由於是別號,所以傳入的參數名能夠是任何正當的標識符,之所以運用標識符event,是由於它更能表意,也是人人默許的習氣。
如今,能夠得出結論了,不管指定事宜處置懲罰順序時運用什麼要領,事宜處置懲罰順序一直有一個參數,也就是事宜對象,由瀏覽器傳入,保存在arguments[0]。

參考資料

    原文作者:屯屯
    原文地址: https://segmentfault.com/a/1190000015368943
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞