typescript 里面的装饰器讲解(1)

装饰器 看到这个东西让我想起来的了 js的设计模式中 有一个就是装饰器模式。
既然谈到了这个 就来说说这个装饰器模式把

装饰器 你可以把它理解成 钢铁侠 托尼和他的盔甲的关系
本来托尼就是一个普通的人 穿上盔甲之后 可以比肩神明

装饰器和这个特别像 给一个类或者方法 加上 其他的东西 使他们变得更加强大起来

官方一点的说法就是:装饰者(decorator)模式能够在不改变对象自身的基础上,动态的给某个对象添加额外的职责,不会影响原有接口的功能。

说的再多不如那实际的代码来做例子 (es5的面向对象方式)

// 假设有一个  人的类
function Person(){

}
Person.prototype.fly=function(){
	console.log('你太重了飞不起来!');
}
var people=new Person();
people.fly(); // 你飞不起来

如果想让人飞来的话 就得让他穿上钢铁侠的盔甲

function IronMan(person){
	this.person=person;  // 保持人类的能力
}
IronMan.prototype.fly=function(){
	this.person.fly();
	console.log('现在穿上盔甲可以飞起来了!');
}
var people=new IronMan(a);
people.fly();

上面的融合在一起就是

function Person(){

}
Person.prototype.fly=function(){
	console.log('你太重了飞不起来!');
}	
var a=new Person();
a.fly();

function IronMan(person){
	this.person=person;  // 保持人类的能力
}
IronMan.prototype.fly=function(){
	this.person.fly()
	console.log('现在穿上盔甲可以飞起来了!');
}
var people=new IronMan(a);
people.fly();

装饰器作为js中最伟大的发明之一,再es7中也是作为标准的存在,只是现在浏览器还没有兼容同时babel中也没有完善 但相信以后 装饰器肯定会 直接书写再咱的代码中的

再ts中的装饰器 主要包括 类,属性,方法,参数装饰器
参数装饰器就不说了 主要是类,属性和方法
关注菜鸟博主,持续更新前端知识

以往可能会这样 但是今天还是要坚持再说一下 类装饰器把
再ts中装饰器 其实就是一个方法 不过却分为两种 一种把 是传参的装饰器 一种是不传参的装饰器

  1. 类装饰器 装饰器再ts中的用法 是在前面加一个 @符号 后面不要加分号哦
    他会默认把后面的类作为参数传进去的
function DecorClass(person:any){
    console.log(person);
}
@DecorClass
class Person{
   public name:string="nihao"
}

在这里插入图片描述
可以再类装饰中 对类的添加和修改一些东西 不过一般不会修改 添加东西的情况比较多 毕竟是装饰器 不是说让你来修改东西

function DecorClass(person:any){
    console.log(person);
    person.prototype.sex='男';
    person.prototype.fly=function(){
        console.log('我会奔跑');
    }
}
@DecorClass
class Person{
   public name:string="nihao"
}
var people:any=new Person();
console.log(people.sex)
people.fly();

在这里插入图片描述
当然你也可以传入一些参数 小编写累了 反正没人看把 等我想起来在后续往后面写
毕竟我写的东西是给自己看的 等啥时候 再来更新
哎可怜呢 一个程序员只能这样自娱自乐了 不说了 工作上的事情来了 先去搞了 撤了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunchong_zhao

帮到你了,请作者喝杯矿泉水可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值