装饰器 看到这个东西让我想起来的了 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中装饰器 其实就是一个方法 不过却分为两种 一种把 是传参的装饰器 一种是不传参的装饰器
- 类装饰器 装饰器再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();
当然你也可以传入一些参数 小编写累了 反正没人看把 等我想起来在后续往后面写
毕竟我写的东西是给自己看的 等啥时候 再来更新
哎可怜呢 一个程序员只能这样自娱自乐了 不说了 工作上的事情来了 先去搞了 撤了