ES6學習筆記九:修飾器
阿新 • • 發佈:2017-07-28
target ado ret () code targe 使用 rate get
一:修飾器(Decorator)是一個函數,用來修改類的行為。
1)定義與使用
function 修飾器名(target) { //target是被修飾對象,可用target.xxx進行調用修改 } @修飾器名 class MyClass { // ... } //調用修飾器 MyClass.修飾器;
修飾器對類的行為的改變,是代碼編譯時發生的,而不是在運行時。這意味著,修飾器能在編譯階段運行代碼。
2)帶參數的修飾器
function 修飾器名(參數列表) { return function(target) {//返回一個閉包函數 target.xx= xx;//修改targer的內容} } @修飾器名(實參) class MyClass {}
MyClass.修飾器;
二:使用
1)修飾類
(見上面格式)
2)修飾類中方法、屬性
在類中的方法、屬性上加 @修飾器 註解即可。
三:第三方模塊
core-decorators.js是一個第三方模塊,提供了幾個常見的修飾器:
autobind
修飾器使得方法中的this
對象,綁定原始對象。
readonly
修飾器使得屬性或方法不可寫。
override
修飾器檢查子類的方法,是否正確覆蓋了父類的同名方法,如果不正確會報錯。
deprecate
或deprecated
修飾器在控制臺顯示一條警告,表示該方法將廢除。
suppressWarnings
修飾器抑制decorated
修飾器導致的console.warn()
調用。但是,異步代碼發出的調用除外。
ES6學習筆記九:修飾器