微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

es6 decorator

decorator修改类 的行为 (扩展类的功能) 的函数

1.修饰类

@testable
class MyClass{}

function testable(target){
    target.isTestable=true
}

console.log(MyClass.isTestable) // true

也可以在prototype修改属性,也可以为修饰器添加多个参数。

@testable(false)
class MyAnotherClass{
    
}
function testable(status){
    return target=>{target.prototype.isTestable=status}
}
console.log('MyClass.isTestable',MyAnotherClass.prototype.isTestable) // false

2.修饰方法

//
function readonly(target,key,descriptor){
    descriptor.writable=false
    return descriptor
}

class MyClass{
    @readonly
    print(){return '2021'}
}
let test=new MyClass();
console.log(test.print());

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐