js函數獲取ev對象


今天工作中遇到一個問題,就是平時獲取一個ev(event)對象時候一般直接在調用方法里面寫一個ev參數,即可直接拿到這個對象,但是有時候會遇到函數調用不是直接加在一個dom對象的后面,如:

var oDiv = document.getElementById('box');

oDiv.onclick = function(ev) {

var x = ev.pageX;

...

};

而是寫在函數屬性中,如:

var oDiv = document.getElementById('box');

oDiv.setAttribute('onclick','fn()');

function fn() {

};

這個時候是無法直接在函數里面傳參的,只能通過如下方式獲取該對象

function fn() {

var ev = arguments.callee.caller.arguments[0];

1.當函數被調用時,它的arguments.callee對象就會指向自身,也就是一個對自己的引用。
由於arguments在函數被調用時才有效,因此arguments.callee在函數未調用時是不存在的(即null.callee),且解引用它會產生異常。

2.在一個函數調用另一個函數時,被調用函數會自動生成一個caller屬性,指向調用它的函數對象。如果該函數當前未被調用,或並非被其他函數調用,則caller為null。

};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM