修饰器是一个函数,用来修改类的行为(扩展类的功能)
{ let readonly = function (target, name, descriptor) { descriptor.writable = false; return descriptor; }; class Test { @readonly time() { return "2020-04-06"; } } let test = new Test(); // test.time = function () { // console.log("reset time"); // }; console.log(test.time()); // 2020-04-06}{ let typename = function (target, name, descriptor) { target.myname = "hello"; }; @typename class Test {} console.log("类修饰符", Test.myname); // 类修饰符 hello // 第三方库修饰器的js库:core-decorators; npm install core-decorators}{ // 实现埋点业务逻辑拆分 // 埋点接口 逻辑 let log = (type) => { return function (target, name, descriptor) { let src_method = descriptor.value; descriptor.value = (...arg) => { src_method.apply(target, arg); console.info(`log ${type}`); }; }; }; // 广告方法逻辑 class AD { @log("show") show() { console.info("ad is show"); } @log("click") click() { console.info("ad is click"); } } let ad = new AD(); ad.show(); // ad is show // log show ad.click(); // ad is click // log cick}