裝飾器應用demo

2021-10-16 13:21:31 字數 1894 閱讀 2236

log

為乙個方法新增 log 函式,檢查輸入的引數:

class

math

}function

log(target, name, descriptor)

with`

, args)

;return oldvalue.

(this

, args);}

;return descriptor;

}const math =

newmath()

;// calling add with [2, 4]

math.

add(2,

4);

debounce

有的時候,我們需要對執行的方法進行防抖處理:

class

toggle

extends

react.component

render()

>

button

<

/button>);

}}

我們來實現一下:

function

_debounce

(func, wait)

, wait);}

}function

debounce

(wait);}

}

function

time

(prefix).$

`;}return-$

`;console.

time

(label)

; fn.

(this

, arguments)

; console.

timeend

(label);}

}}}

mixin

用於將物件的方法混入 class 中:

const singermixin =};

const flymixin =

,fly()

,land()

};@mixin

(singermixin, flymixin)

class

bird

}var bird =

newbird()

;bird.

singmatingcall()

;// alerts "tweet tweet"

mixin 的乙個簡單實現如下:

function

mixin

(...mixins)}}

};}

redux

實際開發中,react 與 redux 庫結合使用時,常常需要寫成下面這樣。

class

myreactcomponent

extends

react.component

export

default

connect

(mapstatetoprops, mapdispatchtoprops)

(myreactcomponent)

;

有了裝飾器,就可以改寫上面的**。

@connect

(mapstatetoprops, mapdispatchtoprops)

export

default

class

myreactcomponent

extends

react.component

;

相對來說,後一種寫法看上去更容易理解。

tornado許可權裝飾器demo

coding utf 8 import tornado.ioloop import tornado.web 利用裝飾器,實現主頁和登入頁任何人可以訪問,系統後台只有超級管理員,運維可以訪問 def access check object 僅為demo,結合業務邏輯進行驗證 中介軟體基類 def pr...

函式應用 裝飾器

裝飾器 修飾乙個 原來定義的乙個函式,但是這個函式的功能不夠完美,需要提公升此函式 不改變原函式的內容,名稱。此時就可以考慮使用 裝飾器 完善購票功能 登入驗證 islogin false 定義裝飾器 def login required func global islogin if islogin...

python 裝飾器應用

裝飾器應用 裝飾器的主要作用是 列印日誌,檢測效能,資料庫事物,url路由 應用1,生成標籤 def bold fn def 閉包,這個函式的作用就是給原來的函式增加一些功能,return fn bold deftest return python in 2 test out 2 python 等價...