ES6 装饰器及webpack下配置装饰器语法

ES6装饰器

我们在使用ES6开发是,如使用umijs+dva开发,经常会使用@connect(),然后,我们的组件中的属性,就会用dispacth方法,同时,也会注入响应的model。如何实现的呢?

其实就是ES6的装饰器。在设计模式中,有一种模式叫,装饰器模式,那么,ES6中在语法@其实就是一种装饰器模式的实现(@的本质其实是语法糖),同事,也可以理解AOP(面向切面的编程)的实现

@装饰器的本质

ES6中装饰器的本质其实是一个函数,如下:

@myDecorator
class A {
   }

// 等同于
class A {
   }
A = myDecorator(A) || A;

也就是定义了一个myDecorator的函数,该函数的第一个参数为紧跟在下面的类A
然后将改函数的返回的值重新赋值给A,如果函数没有返回值,则,默认返回A本身

那么装饰啥呢?

对类的装饰

通常对类的装饰通常,是添加方法,或修改方法
如何实现对被装饰类的方法进行修改或添加方法呢?
主要是通过对象的原型链属性 prototype实现,如我们需要对A添加一个打印的方法

function myDecorator(target) {
   
	target.show = function () {
   
		console.log('static function show...')
	}
	target.prototype.print = function() {
   <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值