js 類的裝飾器基本用法

2021-09-27 09:32:56 字數 1671 閱讀 6178

裝飾器(decorator)是一種與類(class)相關的語法,用來注釋或修改類和類方法。

特點

@testable

class

mytestableclass

function

testable

(target)

mytestableclass.istestable // true

這裡的@testable就是乙個裝飾器。它修改了mytestableclass這個類的行為,為它加上了靜態屬性istestabletestable函式的引數targetmytestableclass類本身。

裝飾器外面再封裝一層函式。

function

testable

(istestable)

}@testable

(true

)class

mytestableclass

mytestableclass.istestable // true

@testable

(false

)class

myclass

myclass.istestable // false

// before

class

myreactcomponent

extends

react.component

export

default

connect

(mapstatetoprops, mapdispatchtoprops)

(myreactcomponent)

;// now

@connect

(mapstatetoprops, mapdispatchtoprops)

export

default

class

myreactcomponent

extends

react.component

class

person$`

}}function

readonly

(target, name, descriptor)

; descriptor.writable =

false

;return descriptor;

}readonly

(person.prototype,

'name'

, descriptor)

;// 類似於

object.

defineproperty

(person.prototype,

'name'

, descriptor)

;

裝飾器第乙個引數是類的原型物件,上例是person.prototype,裝飾器的本意是要「裝飾」類的例項,但是這個時候例項還沒生成,所以只能去裝飾原型(這不同於類的裝飾,那種情況時target引數指的是類本身);第二個引數是所要裝飾的屬性名,第三個引數是該屬性的描述物件。

Python day7 裝飾器基本用法

裝飾器 本質就是函式,功能是為其他函式新增附加功能 原則 1.不修改被修飾函式的源 2.不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式呼叫 閉包 例 原函式 def test time.sleep 3 print 測試完成 test 測試完成目標 不改變原函式 和呼叫方式的情況...

函式裝飾器 類裝飾器

一 函式裝飾函式 defwrapfun func definner a,b print function name func.name r func a,b return r return inner wrapfun defmyadd a,b return a b print myadd 2,3 二...

類的裝飾器

def deco obj obj.x 1 obj.y 2 return obj deco 相當於foo deco foo class foo pass print foo.dict deco 相當於test deco test def test pass print test.dict 輸出 def...