1. 程式人生 > >ES6學習筆記九:修飾器

ES6學習筆記九:修飾器

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修飾器檢查子類的方法,是否正確覆蓋了父類的同名方法,如果不正確會報錯。

deprecatedeprecated修飾器在控制臺顯示一條警告,表示該方法將廢除。

suppressWarnings修飾器抑制decorated修飾器導致的console.warn()調用。但是,異步代碼發出的調用除外。

ES6學習筆記九:修飾器