From c9aaf18a821629cb63a7fafc6dd4faab960a17c2 Mon Sep 17 00:00:00 2001 From: zhl Date: Fri, 18 Dec 2020 16:18:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E8=B7=9F=E8=B8=AA=E5=AD=97=E6=AE=B5=E5=80=BC=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9A=84decorator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/decorators/debug.decorator.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/decorators/debug.decorator.ts diff --git a/src/decorators/debug.decorator.ts b/src/decorators/debug.decorator.ts new file mode 100644 index 0000000..0472431 --- /dev/null +++ b/src/decorators/debug.decorator.ts @@ -0,0 +1,22 @@ +/** + * 用于跟踪class某property的值变化 + * 使用方法: + * 在需要跟踪的字段上加上 @trace + */ +export function trace() { + return function (target: any, name: string) { + let val = target[name]; + const setter = function (valNew: any) { + console.trace(`${target.constructor.name}.${name} set val: ${valNew}`); + val = valNew; + } + const getter = function () { + return val; + } + Reflect.defineProperty(target, name, { + get: getter, + set: setter + }) + } + +}