proxy攔截對象方法(讓apply,call傳入的this失效)

     有時候我們期望一個對象的方法中的this永遠指向他自身而不會被call和apply所傳入的this所影響,這個時候我們就可以使用proxy在對象中架設一層攔截,這裏我們需要攔截get操作。因爲proxy中只提供了普通方法的攔截(通過handler中的apply屬性),而沒有提供對象方法的攔截。變通一下,我們只需要在對象訪問方法的時候綁定this就行(這個this就是我們的對象本身),任何對象的訪問操作都會觸發get,所以我們選擇了攔截get。具體代碼如下:

     從結果來看經過proxy攔截之後,call和apply傳入的上下文對象都無效了,因爲我們在get中將obj對象的方法都通過bind綁定了obj對象本身,符合我們的期望。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章