對Function的幾個有用的擴充套件 2

2021-04-15 04:34:28 字數 1504 閱讀 6538

2、bindbefore(bindafter):將乙個方法繫結到另乙個方法上,使之在被繫結的方法之前(後)執行。

bindbefore(bindafter)的最典型應用場景是:某一事件需要繫結若干個方法,且必須保證執行順序,先執行方法a,再執行方法b。傳統的addeventlistener雖然能夠將這些方法繫結到特定物件上,卻不能保證執行順序(關於事件函式的執行順序,不同的瀏覽器有不同的規則)。我們可以將事件方法先bindbefore (bindafter)之後,再addeventlistener,可以解決這一問題。

使用方法: newfunction = functiona.bindbefore(functionb,caller,arg1,arg2,......);

例:var functiona = function()

var functionb = function()

var but = document.getelementbyid("demobutton");

if(but.onclick)but.onclick = but.onclick.bindafter(functiona.bindbefore(functionb));

else but.onclick = functiona.bindbefore(functionb);

繫結後的onclick執行順序是:1、原有的onclick事件函式(如果有);2、functionb;3、functiona

需要說明的是,如果要「阻止」後續方法的執行,只要將本方法返回false即可。可以在bindbefore(bindafter)時指定caller和引數(未指定時,caller為windows),在事件函式允許時,該函式的this將指向caller.

3、bindaseventlistener

本擴充套件需要解決的問題是:在多frame的頁面中,我們可能需要在framea中響應frameb中的事件。並在frama中對frameb中的事件源進行某些處理和操作。

bindaseventlistener在事件發生時,抓取事件,即使它在其他frame中。然後將event物件和發生事件的document物件傳遞給事件處理函式。

例:parent.frame(

1).window.document.getelementbyid(

"demo

").onclick 

=eventfunc.bindaseventlistener(window);

同樣,bindaseventlistener也可以指定caller.未指定時為window.

4、join

本擴充套件將兩個方法的返回值以某個固定的連線詞以字串的形式連線起來。

例:varnewfunc 

=funca.join(funcb,

"join ");

newfunc()將返回 "a join b"。

可以在呼叫newfunc時指定funca和funcb的caller,使方法中的this指向他們。

回頭看看我們在class基類中使用的這段**:

通過join完成了繼承關係的描述。

自己常用的幾個function

1 當遇到會被修改,但修改次數非常少,而且內容不太多時,存入資料庫其實沒有必要。這時我會選擇寫入檔案 讀取時 缺點 必須先建立好檔案,不過即使是資料庫,表也是要先建表.2 取ip function getonlineip elseif xip strcasecmp xip,unknown elsei...

幾個有用的巨集

分類 c c 1.列印錯誤資訊 如果程式的執行必須要求某個巨集被定義,在檢查到巨集沒有被定義是可以使用 error,warning列印錯誤 警告 資訊,如 ifndef unix error this section will only work on unix systems endif 只有 u...

幾個有用的巨集

1.列印錯誤資訊 如果程式的執行必須要求某個巨集被定義,在檢查到巨集沒有被定義是可以使用 error,warning列印錯誤 警告 資訊,如 ifndef unix error this section will only work on unix systems endif 只有 unix 巨集被...