当前位置: 首页 > news >正文

html音乐网页完整代码江苏seo和网络推广

html音乐网页完整代码,江苏seo和网络推广,网站做流量是怎么回事,赣州市网站建设公司定义 装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上,是一种在不改变原类和使用继承的情况下,动态的扩展对象功能。 装饰器使用expression形式,其中expression必须…

定义

装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上,是一种在不改变原类和使用继承的情况下,动态的扩展对象功能。
装饰器使用@expression形式,其中expression必须评估为一个函数,该函数将在运行时调用,并带有有关装饰声明的信息。
前置操作

// tsconfig.json
{"compilerOptions": {"target": "ES5","experimentalDecorators": true}
}

使用

类装饰

类装饰器会把Class A的构造函数传入你的watcher函数当做第一个参数

const watcher: ClassDecorator = (target) => {target.prototype.age = 18target.prototype.getName = ():string=>{return 'hello'}
}
@watcher
class A {constructor() {}
}
const a = new A()
console.log((a as any).age);  // 18
console.log((a as any).getName());  //hello

装饰器工厂

如果想要传递参数,使装饰器变成类似工厂函数,只需要在装饰器函数内部再返回一个函数即可。

const watcher = (name: string): ClassDecorator => {return (target) => {target.prototype.age = 18target.prototype.getName = (): string => {return name}}}
@watcher('hello data')
class A {constructor() {}
}
const a = new A()
console.log((a as any).age); // 18
console.log((a as any).getName()); // hello data

装饰器组合

可以给一个类使用多个装饰器

const watcher = (name: string): ClassDecorator => {return (target) => {target.prototype.age = 18target.prototype.getName = (): string => {return name}}}const addAge = (age:number):ClassDecorator => {return (target) =>{target.prototype.addAge = (): number => {return age+1}}
}@watcher('hello data')  @addAge(20)
class A {constructor() {}
}
const a = new A()
console.log((a as any).age);
console.log((a as any).getName());
console.log((a as any).addAge());

方法/属性装饰器

装饰器参数为:

  • target:对象的原型:对于静态成员来说是类的构造函数,对于实例成员是类的原型对象
  • propertyKey:方法的名称
  • descriptor:方法的属性描述符
    这三个属性实际就是Object.defineProperty的三个参数,如果是类的属性,则没有传递第三个参数
const met: MethodDecorator = (...args) => {console.log(args)
}class A {constructor() {}@metgetName(): string {return 'hello'}
}const xx = new A()

在这里插入图片描述

// 声明装饰器修饰方法/属性
function method(target: any, propertyKey: string, descriptor: PropertyDescriptor) {descriptor.writable = false;
};function property(target: any, propertyKey: string) {// 修改属性target[propertyKey] = '11223'
}class Person {@propertyname: string;constructor() {}@methodsay() {return 'instance method';}
}const xmz = new Person();// 修改实例方法say
xmz.say = () => {return '5566'   //由于 descriptor.writable = false; 所以此处修改不生效
}
console.log(xmz.name)
console.log(xmz.say())  // nstance method

参数装饰

装饰器参数为:

  • target:当前对象的原型
  • propertyKey:参数的名称
  • index:参数数组中的位置
const init: ParameterDecorator = (...args)=>{console.log(args)
}
class A {constructor() {}getName(@init name: string = 'hello') {console.log(name) // [ {}, 'getName', 0 ]}
}

元数据

import data from './data.json'
import 'reflect-metadata'const Base = (base: string) => {return (target) => {target.prototype.base = base}
}const GetData = (url: string) => {console.log('getData run')const fn: MethodDecorator = (target: any, key, descriptor: PropertyDescriptor) => {const prop = Reflect.getMetadata('key', target)console.log(prop, 'prop')descriptor.value(prop ? data[prop] : data)}return fn;
}const Result = () => {console.log('result run')const fn: ParameterDecorator = (target: any, key, index) => {Reflect.defineMetadata('key', 'data', target)}return fn
}@Base('/api')
class Http {fileName: stringconstructor(name) {this.fileName = name}@GetData('json')getList(@Result() data: any) {console.log(data)}
}
const http = new Http('orange')
http://www.yidumall.com/news/54224.html

相关文章:

  • 高新网站建设哪家好汕头seo管理
  • 织梦cms 网站栏目管理如何提高网站搜索排名
  • 国外网站A企业产品推广策划方案
  • 哪里买域名便宜seo平台是什么
  • 南宁网站设计建设百度总部地址
  • 容桂做外贸网站域名注册服务商
  • wordpress有手机版么seo网站内容优化
  • c 与oracle做网站宁波营销型网站建设优化建站
  • wordpress图片管理丈哥seo博客工具
  • 做网站空间不给账号密码泉州百度竞价开户
  • vs2010做网站搜索引擎主要包括三个部分
  • 编程做网站网站制作流程图
  • 权威的广州h5网站seo sem什么意思
  • 揭阳做淘宝批发拿货什么网站今日十大新闻
  • 沈阳做网站最好的公司有哪些湖南中高风险地区
  • 哪个网站可以做鞋鉴定合肥网站推广
  • 合肥城乡建设网站网络推广技巧
  • 网站的做代理商搜索引擎大全排行榜
  • 优秀的网站通过什么提供信息企业网站排名优化方案
  • 加强门户网站建设提升百度站长工具域名查询
  • 学校二级网站建设引流推广平台软件
  • 建设一个大型电影网站费用近期国际新闻
  • 平台网站开发公司汕头网站建设开发
  • 钻磊二级域名分发北京seo公司华网白帽
  • 华为云自助建站靠谱吗外贸营销型网站制作
  • wordpress后台经常504seo专员
  • 全国疫情最新通报seo优化步骤
  • 网站空格键代码河南百度关键词优化排名软件
  • 物业管理系统app网站seo快速优化
  • 做短裙的视频网站友情链接出售网