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

//装饰器的学习

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

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

//@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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容