在ES7中Decorators,也是一個函數,我們隻需要在它前面加上@符号,并将它标注在特定的目标,如class、method等,則可以實作方法的包裹攔截。它的傳入參數有:target, name, descriptor。它們分别标記目标,标記目标名稱,以及目标描述資訊。在descriptor中,包括configurable、enumerable、writable,value四個屬性。它們分别可以控制目标的讀寫、枚舉,以及目标值。
是以我們可以如下實作:
首先我們将原來的方法體緩存起來,直到方法調用時,才會被調用以實作方法調用前後的日志攔截,列印相關資訊。示例的效果如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLw9WYtc2bs1ycy9GdhJ3bjVGZtczcl9CXn1Wafd2bsJ2LcNXZnFWbp9CXvlmLiVHa0l2ZucmbvJXZn5WZlJ3Zvw1LcpDc0RHaiojIsJye.png)
整個demo示例,你也可以在codepen上細細把玩:
本文轉自破狼部落格園部落格,原文連結:http://www.cnblogs.com/whitewolf/p/es7-decorators-log-aop.html,如需轉載請自行聯系原作者