js中的鉤子機制 hook

2021-08-20 01:46:48 字數 2767 閱讀 2808

什麼是鉤子機制?使用鉤子機制有什麼好處?

鉤子機制也叫hook機制,或者你可以把它理解成一種匹配機制,就是我們在**中設定一些鉤子,然後程式執行時自動去匹配這些鉤子;這樣做的好處就是提高了程式的執行效率,減少了if else 的使用同事優化**結構。由於js是單執行緒的程式語言,所以程式的執行效率在前端開發是比較重要的,在開發中我們秉承如果能用switch case 的地方就不要用if else 可以用hook實現的盡量使用hook機制去實現。

這裡我們舉乙個例子看一下:

例如我們在向後台進行ajax請求的時候,後台經常會返回我們一些常見的錯誤碼,如:001代表使用者不存在,002代表使用者密碼輸入錯誤。003代表使用者被鎖定。這個時候我們要將錯誤友好的提示給使用者。這個時候我們該怎樣實現呢?

一般的寫法可能是:

? 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$.ajax(option,function(result)elseif(errcode =='002')elseif(errcode =='003')

}else

},function(err))

這樣寫其實是比較low低,稍微有點經驗的可能會使用switch case來實現,但是這個兩種寫法都無法避免乙個問題就是如果我的錯誤碼特別多,那得寫多少個if else和case 啊?但是如果使用hook寫法的話就會簡單好多,

首先我們先宣告乙個錯誤碼鉤子列表

? 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

var codelist  =

$.ajax(option,function(result)else

},function(err))

這樣寫的話**結構更加清楚明了。這個例子是最簡單的應用了的了。在jquery 中hook機制被大量的使用,這裡我們就jquery中判斷變數型別的type方法來具體看一下

通常我們在js中判斷乙個變數的資料型別?首先會想到type of 和 instanceof

如果是基本型別我們可以直接使用typeof,但是這種方式只能判斷基本資料型別,如果是物件,它返回結果都市object,如果變數是null它返回的也是object。這個時候我們要準確的判斷一般的寫法可能會是:

? 1

2

3

4

5

6

7

8

9

functiontype(obj)else

returntype;

}

在jquery中的實現是:

var class2type={};

var tostring = object.prototype.tostring;

jquery.each("boolean number string function array date regexp object error symbol",function(index,name))

type:function(obj)

return typeof obj =="object"||typeof obj ==="function"?class2type[tostring.call(obj)]|||"object":typeof obj

}

上面**中

class2type = ;

設定乙個型別鉤子物件

tostring.call(obj)就是object.prototype.tostring.call(arg)來細緻判斷obj的型別。在這裡則轉換成物件對應索引是否在class2type 中存在相應value,若存在則返回value判斷,若不存在則返回object型別。

這樣就實現了型別的判斷。

鉤子 HOOK 機制的使用

wh mouse,gethookinfo,hinstance,getcurrentthreadid mymousehook.callbackfun callbackf mymousehook.isrun not mymousehook.isrun end end procedure uninstal...

鉤子 HOOK 機制的使用

wh mouse,gethookinfo,hinstance,getcurrentthreadid mymousehook.callbackfun callbackf mymousehook.isrun not mymousehook.isrun end end procedure uninstal...

php中的鉤子 hook外掛程式機制

對 鉤子 這個概念其實不熟悉,最近看到乙個php框架中用到這種機制來擴充套件專案,所以大概來了解下。hook外掛程式機制的基本思想 在專案 中,你認為要擴充套件 暫時不擴充套件 的地方放置乙個鉤子函式,等需要擴充套件的時候,把需要實現的類和函式掛載到這個鉤子上,就可以實現擴充套件了。思想就是這樣聽起...