装饰器-decorator

装饰器这个概念,很早就开始听人说过,但是并没有去深入了解过。因为之前在使用mobx,里面有大量的@使用,所以 这次来学习一下。

装饰器模式- 是一种设计模式,主要是对类或者类的属性方法 在功能上进行扩展 不改变其原有的结构。

在js中decorator 就是对象进行包装,返回一个新的对象描述(descriptor)。本质其实就是一个函数,分别接收三个参数,第一个是target,即要进行装饰的类的原型,第二个参数是key,即要进行装饰的类或者方法属性的名称,第三个是descriptor,即被装饰的类或者方法属性的descriptor。当然,它也可以接收其他参数,只是使用起来,方式略有不同,但本质还是一样的。

Object.defineProperty(obj,prop,descriptor )


js中的decorator其实是一个语法糖,作用于对象的属性时,实质利用了Object.defineProperty方法。Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

descriptor-属性描述符。对象里目前存在的属性描述符有两种主要形式:数据描述符存取描述符数据描述符是一个具有值的属性,该值可能是可写的,也可能不是可写的。存取描述符是由 getter-setter 函数对描述的属性。

get -- 一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。该方法返回值被用作属性值。默认为 undefined。

set-- 一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。该方法将接受唯一参数,并将该参数的新值分配给该属性。默认为 undefined。

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

推荐阅读更多精彩内容

  • 随着 ES6 和 TypeScript 中类的引入,使得我们在多个不同类之间共享或者扩展一些方法或者行为的时候,变...
    折木丶青梵阅读 17,676评论 1 14
  • 女儿生病住院,请假了一周时间。回来之后,进班上课,张思晨又在聒噪。 “老师我们都想你了。” “你破坏了我回来之后的...
    雕翎_66a9阅读 238评论 2 0
  • 我的妈妈叫侯少然,平常个子身材有点微胖,每天放学回家,妈妈都给我做好吃的饭菜,我爱我的妈妈。
    侯依泽依辰阅读 133评论 0 0
  • 线上消费是现在很多消费者购物选择的方式了。如何充分利用这一巨大的消费群体呢?济南生活云商平台就是能帮助你撬动网购界...
    树静风止123阅读 260评论 0 1