1. 程式人生 > >js函數獲取ev對象

js函數獲取ev對象

如果 自身 js函數 dom 有時 另一個 問題 就是 doc

今天工作中遇到一個問題,就是平時獲取一個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。

};

js函數獲取ev對象