龙岗个性化网站建设价格低优秀网站案例

bicheng/2026/1/16 21:16:59/文章来源:
龙岗个性化网站建设价格低,优秀网站案例,动画制作流程图,毕业了智慧团建密码忘了在我们深入了解 Angular 2 中 NgModule、Component、Injectable 等常见的装饰器之前#xff0c;我们要先了解 TypeScript 中的装饰器。装饰器是一个非常酷的特性#xff0c;最早出现在 Google 的 AtScript 中#xff0c;它出现的目的是为了让开发者#xff0c;开发出更容易… 在我们深入了解 Angular 2 中 NgModule、Component、Injectable 等常见的装饰器之前我们要先了解 TypeScript 中的装饰器。装饰器是一个非常酷的特性最早出现在 Google 的 AtScript 中它出现的目的是为了让开发者开发出更容易维护、更容易理解的 Angular 代码。令人兴奋的是在2015年 Angular 团队跟 MicroSoft 的 TypeScript 团队经过数月的的交流最终决定采用 TypeScript 来重写 Angular 2 项目 。 装饰器是什么 它是一个表达式该表达式被执行后返回一个函数函数的入参分别为 targe、name 和 descriptor执行该函数后可能返回 descriptor 对象用于配置 target 对象 装饰器的分类 类装饰器 (Class decorators)属性装饰器 (Property decorators)方法装饰器 (Method decorators)参数装饰器 (Parameter decorators)TypeScript 类装饰器 类装饰器声明 declare type ClassDecorator TFunction extends Function(target: TFunction) TFunction | void类装饰器顾名思义就是用来装饰类的。它接收一个参数 target: TFunction - 被装饰的类看完第一眼后是不是感觉都不好了。没事我们马上来个例子 function Greeter(target: Function): void {target.prototype.greet function (): void {console.log(Hello!);} }Greeter class Greeting {constructor() {// 内部实现} }let myGreeting new Greeting(); myGreeting.greet(); // console output: Hello!;上面的例子中我们定义了 Greeter 类装饰器同时我们使用了 Greeter 新的语法来使用装饰器。 (备注读者可以直接复制上面的代码在 TypeScript Playground 中运行查看结果)。 有的读者可能想问例子中总是输出 Hello! 能自定义输出的问候语么 这个问题很好答案是可以的。具体实现如下 function Greeter(greeting: string) {return function(target: Function) {target.prototype.greet function(): void {console.log(greeting);}} }Greeter(您好) class Greeting {constructor() {// 内部实现} }let myGreeting new Greeting(); myGreeting.greet(); // console output: 您好!;TypeScript 属性装饰器 属性装饰器声明 declare type PropertyDecorator (target:Object, propertyKey: string | symbol ) void;属性装饰器顾名思义用来装饰类的属性。它接收两个参数 target: Object - 被装饰的类propertyKey:string | symbol - 被装饰类的属性名趁热打铁马上来个例子热热身 function LogChanges(target: Object, key: string) {var propertyValue: string this[key];if(delete this[key]) {Object.defineProperty(target, key, {get: function () {return propertyValue;},set: function(newValue) {propertyValue newValue;console.log(${key} is now ${propertyValue});}});} }class Fruit {LogChangesname: string; }let fruit new Fruit(); fruit.name apple; // console output: name is now apple fruit.name banana; // console output: name is now banana那么问题来了如果用户想在属性变化的时候自动刷新页面而不是简单地在控制台输出消息那要怎么办我们能不能参照类装饰器自定义问候语的方式来实现监测属性变化的功能。具体实现如下 function LogChanges(callbackObject: any) {return function(target: Object, key: string): void {var propertyValue: string this[key];if(delete this[key]) {Object.defineProperty(target, key, {get: function () {return propertyValue;},set: function(newValue) {propertyValue newValue;callbackObject.onchange.call(this, propertyValue);}});}} }class Fruit {LogChanges({onchange: function(newValue: string): void {console.log(The fruit is ${newValue} now);}})name: string; }let fruit new Fruit(); fruit.name apple; // console output: The fruit is apple now fruit.name banana; // console output: The fruit is banana nowTypeScript 方法装饰器 方法装饰器声明 declare type MethodDecorator T(target:Object, propertyKey: string | symbol, descriptor: TypePropertyDescriptT) TypedPropertyDescriptorT | void;方法装饰器顾名思义用来装饰类的属性。它接收三个参数 target: Object - 被装饰的类propertyKey: string | symbol - 方法名descriptor: TypePropertyDescript - 属性描述符废话不多说直接上例子 function LogOutput(tarage: Function, key: string, descriptor: any) {var originalMethod descriptor.value;var newMethod function(...args: any[]): any {var result: any originalMethod.apply(this, args);if(!this.loggedOutput) {this.loggedOutput new Arrayany();}this.loggedOutput.push({method: key,parameters: args,output: result,timestamp: new Date()});return result;};descriptor.value newMethod; }class Calculator {LogOutputdouble (num: number): number {return num * 2;} }let calc new Calculator(); calc.double(11); // console ouput: [{method: double, output: 22, ...}] console.log(calc.loggedOutput); 最后我们来看一下参数装饰器 TypeScript 参数装饰器 参数装饰器声明 declare type ParameterDecorator (target: Object, propertyKey: string | symbol, parameterIndex: number ) void参数装饰器顾名思义是用来装饰函数参数它接收三个参数 target: Object - 被装饰的类propertyKey: string | symbol - 方法名parameterIndex: number - 方法中参数的索引值function Log(target: Function, key: string, parameterIndex: number) {var functionLogged key || target.prototype.constructor.name;console.log(The parameter in position ${parameterIndex} at ${functionLogged} hasbeen decorated); }class Greeter {greeting: string;constructor(Log phrase: string) {this.greeting phrase; } } // console output: The parameter in position 0 at Greeter has // been decorated我有话说 1.Object.defineProperty() 方法有什么用 Object.defineProperty 用于在一个对象上定义一个新的属性或者修改一个已存在的属性并返回这个对象。 方法的签名Object.defineProperty(obj, prop, descriptor) 参数说明如下 obj 需要定义的属性对象prop 需被定义或修改的属性名descriptor 需被定义或修改的属性的描述符对象里目前存在的属性描述符有两种主要形式数据描述符和存取描述符。数据描述符是一个拥有可写或不可写值的属性。存取描述符是由一对 getter-setter 函数功能来描述的属性。描述符必须是两种形式之一不能同时是两者。 数据描述符和存取描述符均具有以下可选键值 configurable 当且仅当该属性的 configurable 为 true 时该属性才能够被改变也能够被删除。默认为 false。enumerable 当且仅当该属性的 enumerable 为 true 时该属性才能够出现在对象的枚举属性中。默认为 false。数据描述符同时具有以下可选键值 value 该属性对应的值。可以是任何有效的 JavaScript 值数值对象函数等。默认为 undefined。writable 当且仅当仅当该属性的writable为 true 时该属性才能被赋值运算符改变。默认为 false。存取描述符同时具有以下可选键值 get 一个给属性提供 getter 的方法如果没有 getter 则为 undefined。该方法返回值被用作属性值。默认为undefined。set 一个给属性提供 setter 的方法如果没有 setter 则为 undefined。该方法将接受唯一参数并将该参数的新值分配给该属性。默认为undefined。使用示例 var o {}; // 创建一个新对象 Object.defineProperty(o, a, {value : 37, writable : true, enumerable : true, configurable : true}); 总结 本文主要介绍了 TypeScript 中的四种装饰器了解装饰器的基本分类和实现原理为我们下一篇深入 Angular 2 的 NgModule、Component、Injectable 等常用装饰器做好铺垫。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业网站seo推广网站开发实习总结

嵌入式的发展怎么样? 嵌入式系统领域一直在迅速发展,伴随着物联网、智能设备、汽车电子、医疗设备等应用的不断增加,对嵌入式技术的需求也在不断扩大。因此,嵌入式领域仍然是一个充满机会的领域,为专业人士提供…

建设银行客户投诉网站网站建设预算描述

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

wordpress网站怎么百度的到做外贸需要网站

目录 2386. 找出数组的第 K 大和 题目描述: 实现代码与解析: 优先级队列(小顶堆) 原理思路: 2386. 找出数组的第 K 大和 题目描述: 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子…

汝州网站建设汝州秘塔猫ai写作官网

1.把GameInfo.cs PlayerModel.cs Vector3.cs Vector4.cs PlayerStateConstans.cs GameState.cs依次粘到model文件夹中,此时项目没有错误,如下图所示; 对应处所修改的代码如下: case LoginProtocol.LOGIN_SRES://1 {Debug.Log(&qu…

做设计网站模块的网站微信小程序开发需要哪些技术

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…

如何做120急救网站比价网站模板

目标网址:https://zbcg.sznsyy.cn/homeNotice 测试时间: 2024-01-03 1 老规矩,打开Chrome无痕浏览,打开链接,监测网络,通过刷新以及上下翻页可以猜测出数据的请求是通过接口frontPageAnnouncementList获取的,查看返回可以看出来数据大概率是经过aes加密的,如图: 通过查看该请…

电子商务网站设计原理名词解释app软件一键生成工具

Care-coordination: Gain-sharing Agreements in Bundled Payment Models 分析一下这篇文章,这篇文章于2021年发表在POMS上,但是引用量没有那么高。这篇文章涉及到医疗捆绑支付,应该可以学习一下。 文章研究一个在一个以最小成本为目标的质…

网站建设专业性上海传媒公司总裁李健

题目 方法 dummy节点 链表的第一个结点,因为没有前驱结点,存在同时删除前驱和后继的情况,这时候我们需要人为构造dummy节点——人为制造出来的第一个结点的前驱结点,也就是说,在可能操作head节点时,我们可…

怎么做网站优化排名到前面wordpress发布视频

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

海口模板建站定制为什么大网站的百度快照更新速度慢还排第一

Flask维护者:李辉, 最近看b站的flask相关,发现了这个视频:[PyCon China 2023] 濒危 Flask 扩展拯救计划 - 李辉_哔哩哔哩_bilibili 李辉讲他在维护flask之余,开发了apiflask这个依托flask的框架。GitHub - apiflask/a…

建设网站费用入什么科目小语种外贸建站

目录 ❀expect命令运用于bash❀ expect使用原理 expet使用场景 常用的expect命令选项 Expect脚本的结尾 常用的expect命令选参数 Expect执行方式 单一分支语法 多分支模式语法第一种 多分支模式语法第二种 在shell 中嵌套expect Shell Here Document(内…

网站推广怎么做的石灰土做击实检测网站怎么填

Package cli version 3.6.0 Usage ansi_toupper(x)ansi_tolower(x)ansi_chartr(old, new, x) Arguments 参数【x】:输入字符串。可能有ANSI的颜色和样式。 参数【old】:指定要翻译的字符的字符串。如果提供长度为2或更多的字符向量,则使用…

如何做网站收录上海外贸网站建设公司价格

1、打开项目文件 打开文件后点击vs code左侧工具栏中第三个源代码管理图标,点击初始化仓库,此时会创建一个本地仓库会检查该项目中的文件变更 2、创建远程仓库 点击克隆/下载,复制HTTPS地址 3、添加远程地址 1)图形化操作 2…

最大网站建设公司一键免费生成网页的网站

在很多软件公司,特别是一些创业型的团队中,对于这样的情景可能大家都很熟悉:项目经理或者产品经理(产品狗)口头或者简单记录一下软件产品的大致要做的功能,直接就让研发团队的兄弟(程序猿&#…

有些人做网站不用钱的,对吗?沧州网络推广渠成网络

设计思路 系统设计过程中充分考虑各个子系统的信息共享要求,对各子系统进行结构化和标准化设计,通过系统间的各种联动方式将其整合成一个有机的整体,使之成为一套整体的、全方位的数据中心大楼综合管理系统,达到人防、物防和技防…

山东网络推广公司潍坊百度推广优化

Netty线程模型 Netty中两个线程池, 分别是BossGroup和WorkGroup, 线程模型如下图所示: 模型解释: Netty 抽象出两组线程池BossGroup和WorkerGroup,BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写BossGroup和WorkerGr…

网站建设分金手指专业十八软文推广的标准类型

附源代码,一定能实现! 目录 EDA设计练习题: 实验要求如下: 思路分析: 代码 99进制计数器 码转换 顶层文件 特别注意 测试 编译通过 结果展示 RTL视图 技术映射视图 软件:Quartus II 13.0 (64…

创意策划网站建立局域网的步骤

目录 0、引言 1、由于RabbitMq是erlang语言开发的,所有需要先安装erlang 2、更新源并安装RabbitMq 3、安装完成之后,服务是启动的,可以通过以下语句查看状态 4、这样安装完成之后,是看不到web页面的,需要再安装一…

农村电商网站建设ppt免费网站申请域名com

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS,轻量2核4G4M带宽服务器297元一年,2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等,买5年可以享受3折优惠,阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

网站建设 维护 运营情况报告专业做物业网站的公司

专题一 CMIP6中的模式比较计划 1.1 GCM介绍全球气候模型(Global Climate Model, GCM),也被称为全球环流模型或全球大气模型,是一种用于模拟地球的气候系统的数值模型。这种模型使用一系列的数学公式来描述气候系统的主要组成部分…