21、装饰器与高级ES6特性及Angular项目模板解析

装饰器与高级ES6特性及Angular项目模板解析

装饰器工厂

对于需要参数的装饰器,标准解决方案是使用装饰器工厂。装饰器工厂是一个函数,它接受所有必要的参数,并返回一个在其内部定义的匿名函数作为实际的装饰器代码。这样,装饰器工厂接收到的参数在具有相同词法作用域的匿名函数中也是可见的。

示例代码如下:

function IAmADecoratorFactory(par1, par2, ...){
    ...
    return function(target: any){
        // par1 在这里也可见
        if(par1)....
        ...
        // par2 在匿名函数内部也可见
        ...par2 + "...."...
    };
}

logClass 转换为装饰器工厂的代码如下:

export function logClass(production?: any) {
    if (production) return () => { };
    return function(target: any) {
        // 存储原始构造函数
        var original = target;
        // 以下代码不变
        ...
    }
}

如果 production

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值