裝飾器是什麼? 解碼器是將另一段代碼包裝在一個代碼中的簡單方法。 這個概念類似於你以前聽說過的功能成分和高階成分。 這在許多情況下都被使用過,也就是說,成都裝修公司簡單地將一個函數包裝到另一個函數中: 前面的示例生成包裝的新函數,它執行與 DoSomething 相同的操作,但它們的不同之處在於在包 ...
裝飾器是什麼?
解碼器是將另一段代碼包裝在一個代碼中的簡單方法。
這個概念類似於你以前聽說過的功能成分和高階成分。
這在許多情況下都被使用過,也就是說,成都裝修公司簡單地將一個函數包裝到另一個函數中:
前面的示例生成包裝的新函數,它執行與 DoSomething 相同的操作,但它們的不同之處在於在包裝函數之前和之後輸出一些語句。
如何使用 Javascript 裝飾器
Javascript 中的裝飾器使用特殊的語法,使用 @作為標識符,並將其放在修飾代碼之前。
註:裝潢師仍在擬議階段,這意味著仍有改變的餘地。
您可以在相同的代碼之前放置許多裝飾符,然後解釋器按順序執行
在上面的示例中,定義了一個類,使用三個裝飾器:兩個用於類本身,一個用於類的屬性:
-@log 可以記錄所有訪問類
-@immutable 使類不可變 - 也許新實例調用 Object. 凍結
-@Time 記錄從執行到輸出唯一標記的方法
現在,雖然瀏覽器或 NODE 還不受支持。但是,如果您使用 Babel,您可以使用轉換 - 裝飾器 - 遺留插件 - 使用裝飾器。
因為 Babel 5 支持處理裝飾器,所以在插件中使用 Legacy,但它可能與最終標準不同,因此使用了遺留一詞。
你為什麼要用裝飾工?
函數組合在 Javascript 中已經成為可能,但是在另一個代碼(如類或類屬性)中使用是相當困難或不可能的。
不同類型的裝潢師
現在,裝飾器只支持類和類屬性,包括屬性、方法、獲取函數和設置函數
裝飾器將只在程式第一次運行時執行一次,並且修飾後的代碼將被返回的值替換
類屬性裝飾器
屬性裝飾器應用於類的單個成員 - 無論是屬性、方法、獲取函數還是集合函數。
裝飾器函數調用三個參數:
- 目標 - 修改類
- 名稱類別成員的姓名
- 描述符 - 成員描述符。Object 將此參數傳遞給 Object.fineProperty
@readonly 是一個典型的例子:
函數只讀(target,name,descriptor){
可寫 = 假;
反轉描述符
12341234
前面的示例將成員描述符中的可寫設置為 false。