美文网首页
@装饰器的学习,类装饰器

@装饰器的学习,类装饰器

作者: 时间久了也就那样了 | 来源:发表于2019-01-27 10:58 被阅读0次

    //装饰器的学习

      // 通过装饰器可以拿到目标类,同时为他增加一些额外的属性或者方法

      //甚至修改内部的描述,对类做些扩展

    //@speak 装饰器在类的外部

    class Boy{

        @speak('中文') //无论是在类的内部还是外部都是对这个类装饰

        run(){

            console.log('i can speak' + this.lan)

            console.log('i can run')

        }

    }

    //target 目标就是@speak 被装饰的这个Boy类

    //并且在new Boy的时候就执行了speak

    //key装饰器在这个类里面所修饰的方法 run()

    //descriptor{writable:true,enumerable:false,configurable:true}

    function speak(lan){

        return function (target,key,descriptor){

            console.log(target)  //Boy{}

            console.log(key)    //run

            console.log(descriptor) //{ }

            target.lan=lan

            return descriptor

        }

    }

    const luke = new Boy()

    luke.run() // i can speak 中文

                      // i can run

    相关文章

      网友评论

          本文标题:@装饰器的学习,类装饰器

          本文链接:https://www.haomeiwen.com/subject/awsgjqtx.html