第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第12天 TypeScript學(xué)習(xí) 10-14~10-15章

標(biāo)簽:
征文 活動(dòng)

课程名称: 晋级TypeScript高手,成为抢手的前端开发人才

课程章节: 10-14 方法拦截器意义 ~ 10-15 【方法装饰器】方法前置拦截和后置拦截

课程讲师: keviny79

课程内容:
方法拦截器的意义:

方法拦截器本质就是一个“函数”,也可以理解为“方法”。
它把 “目标类的方法” 包裹在自己体内,然后再执行这个 “目标类的方法” 之前 帮 “目标类的方法” 做一些前置工作 和 执行完 “目标类的方法” 做一些后置工作, 这就是 “前置拦截”和“后置拦截”。
方法拦截器从本质上来讲,就是扩大了“目标类上的方法”的特定的函数
使用场景如:增加一个日志信息,修改方法参数进行功能扩展处理。

拦截器的实现:

// 增强目标类的方法功能
// 字符串相关工具类
class StringUtil {
  // 去除字符串中空格
  public static trimSpace(str: string): string {
    return str.replace(/\s+/g, "");
  }
}


// 方法装饰器
function MyMethodDecorator(methodPath: string) {
  return function (
    targetClassPrototype: any,
    methodname: string,
    dataprops: PropertyDescriptor
  ) {
	// 保存一份 目标类上的方法
	// dataprops.value 得到的是 装饰器上的方法
    let datamethodprops = dataprops.value;

    // 方法拦截器
    // 创建一个函数并把这个保存给 目标类上的方法
    dataprops.value = function (...args: any) {
      args = args.map((arg: any) => {
        if (typeof arg === "string") {
          return StringUtil.trimSpace(arg);
        }
        return arg;
      });
      console.log("args:", args);
      
      // 前置拦截
      // 在调用目标类上的方法之前,为前置拦截
      // 调用之前保存的 目标类上的方法,并传递参数
      datamethodprops.call(this, args);
      
      // 在调用了 目标类上的方法 后,为后置拦截
      console.log("后置拦截。。。");
    };
  };
}

class RoleService {
  public roleName: string = "管理员";
  constructor() {}
  
  // 使用方法装饰器
  @MyMethodDecorator("/searchFood")
  DistribRoles(userName: string, isValid: boolean) {
    console.log("分配角色.....");
  }
}

let roleService = new RoleService();
// 需要调用方法,在执行方法装饰器
roleService.DistribRoles("战三", true);

课程收获:
明白了方法拦截器的意义、使用方法、使用场景

图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消