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

ae模板免费下载网站有哪些免费网上销售平台

ae模板免费下载网站有哪些,免费网上销售平台,有路由器做网站,企业做网站有什么好处坏处目录 类的概念类的继承 :类的存取器:类的静态方法与静态属性:类的修饰符:参数属性:抽象类:类的类型: 总结: 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的…

在这里插入图片描述

目录

    • `类的概念`
    • `类的继承` :
    • `类的存取器`:
    • `类的静态方法与静态属性`:
    • `类的修饰符`:
    • 参数属性:
    • `抽象类`:
    • `类的类型`:
  • 总结:

类的概念

类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的类建立在原型上,但也具有某些语法和语义未与 ES5 类相似语义共享。


TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一些新的用法。

关于ES6的 Class 类语法概念,在本章节不做过多阐述,感兴趣的的小伙伴 可以 点击这里,了解查看更多 ES6中有关Class的语法概念使用。

本章节还是主要给大家带来,在 TypeScript 中,如何去定义 Class 【类】,以及如何去使用 类身上的 属性及方法。

定义Class : 使用 Class 定义类,使用 constructor 定义构造函数。

在原生 JavaScript

class Rectangle {constructor(height, width) {this.height = height;this.width = width;}
}
new Rectangle(1, 2)   //实例化,并传入参数

上面的是,在JS中,Class 类的常用定义方式。

而在TypeScript 中定义 Class 类:

class identity {name: string;   //TS 中需要对要接受的参数初始化age: number;constructor(name: string, age: number) {    //为要传入的参数指定类型。不指定类型,默认为Any 类型。this.name = name;this.age = age;}sayHi() {return `我叫 ${this.name},今年${this.age}`;}
}
let a = new identity('张三', 20);
console.log(a);    //Animal {name: '张三', age: 20}console.log(a.sayHi());  //我叫 张三,今年20岁

类的继承

使用 extends 关键字实现继承,子类中使用 super() 关键字来调用父类的构造函数和方法。

class identity {   //父类name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHi() {return `我叫 ${this.name},今年${this.age}`;}
}//子类
class copy extends identity {   //由于我继承了 identity ,在 identity 身上已经存在了 name 和 age// 所以 在 copy 类里面就不用再定义 name 和 age了,继承后可以直接读取到,所继承类身上的属性方法。constructor(name: string, age: number) {super(name, age)              // super 继承}
}
let c = new copy("李四", 30) //实例化子类
console.log(c);  //copy {name: '李四', age: 30}//可以调用父类身上的方法。
console.log(c.sayHi());   //我叫 李四,今年30岁

类的存取器

使用 getter 和 setter 可以改变属性的赋值和读取行为。

存取器的作用:可以用来更专注化的控制对,对象属性方法的读取和修改。

class identity {   //父类name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}//设置读取器=》,用来读取数据get names() {return "getter" + `我叫 ${this.name},今年${this.age}`;}//设置存储器,用来修改数据set names(val: string) {console.log("这是set 传入进来的值", val);}
}let a = new identity("张三", 18);
console.log(a.names);  //当我们访问读取器的时候会触发get,会直接得到返回的值 : getter张三18
a.names = "李四" //当我们为存储器赋值的时候,会触发 set 并且会把,赋值,当成参数,传递给 set。

使用 存储器的好处:对属性方法的读取和修改,更加的专业化,不同的存取器,负责不同的逻辑处理,这里的存取器,也相似于 Vue 中的 computed 计算属性。 以及 Object.defineProperty()的 get 和 set 方法 类似。


类的静态方法与静态属性

有时候,我们希望 类中所定义的属性或者方法,不想被实例化后的对象读取,不需要实例化,那么,我们就可以通过 static 关键字,来把 属性或方法定义为静态成员来实现。

class identity {static username: string = "asdasd";    //将 username  通过 static 设置为静态属性。并为其赋值。name: stringage: number;constructor(name: string, age: number) {this.name = name;this.age = age;console.log(this.username);  //也会报错,类的内部也不能拿取 username}//将方法设置为 静态方法static bolkfn() {console.log("静态方法");}
}let a = new identity("张三", 18);console.log(identity.username);  // 类自身访问静态属性,不会报错console.log(a.username);      //实例对象访问静态属性,会报错 :属性“username”在类型“identity”上不存在。console.log(identity.bolkfn());  // 类自身访问静态方法,不会报错console.log(a.bolkfn());      //实例对象访问静态方法,会报错 :属性“bolkfn”在类型“identity”上不存在。

扩展知识点

在ES7 中有一些关于类的新特性提案,TypeScript 也实现了它们,这里做一个简单的介绍。

ES6 中实例的属性只能通过构造函数中的 this.xxx 来定义,而在 ES7 提案中可以直接在类里面定义:

class Animal {name = 'Jack';  //可以直接在类中定义,非必须要在 constructor 通过 this.name 来定义。constructor() {// ...}
}let a = new Animal();
console.log(a.name); // Jack 可以直接读取到name属性 

类的修饰符

TypeScript 可以使用三种访问修饰符(Access Modifiers),分别是 publicprivate protected

  • public :修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public
  • private 修饰的属性或方法是私有的不能在声明它的类的外部访问,虽然 子类 可以通过 extends 继承它的私有属性,但是却无法读取
  • protected : 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的,也依然无法在外部访问

例:
public

class Animal {public name;public constructor(name) {this.name = name;}
}
let a = new Animal('Jack');
console.log(a.name); // Jack
a.name = 'Tom';
console.log(a.name); // Tom

private

class Animal {private name;   //设置私有化public constructor(name) {this.name = name;}
}let a = new Animal('Jack');
console.log(Animal.name);  //只能自身读取console.log(a.name);  //报错
a.name = 'Tom';   //报错

即使通过子类继承,在子类继承中也不能访问读取

class Animal {private name;public constructor(name) {this.name = name;}
}
class Cat extends Animal {constructor(name) {super(name);console.log(this.name);   //报错,子类继承中也无法访问私有化数据}
}

当构造函数修饰为 private 时,该类 允许被继承或者实例化:

class Animal {public name;private constructor(name) {  //构造函数 private 私有化this.name = name;}}class Cat extends Animal {  //报错不能被继承constructor(name) {super(name);}}let a = new Animal('Jack');  //报错,不应该被实例化

protected

当使用 protected 修饰,则 允许 在子类中访问:

class Animal {private name;public constructor(name) {this.name = name;}
}
class Cat extends Animal {constructor(name) {super(name);console.log(this.name);   //不会报错,子类继承中可以访问}
}

当构造函数修饰为 protected 时,该类只允许被继承:

class Animal {public name;protected constructor(name: string) {this.name = name;}
}
class Cat extends Animal {constructor(name: string) {super(name);}
}let a = new Animal('Jack');  //报错,因为  Animal 只允许被继承。

参数属性:

上面,介绍的三种 修饰符,其实还有一种简洁的写法,被称为 属性参数写法;修饰符还可以使用在构造函数参数中等同于类中定义该属性同时给该属性赋值,使代码更简洁。

class Animal {// public name;   //可以省略此处protected constructor(public name: string) {  //  private   protected  同理// this.name = name;   //可以省略此处}
}

readonly : 只读属性关键字,只允许出现在属性声明或索引签名或构造函数中。

class Animal {readonly name;public constructor(name) {this.name = name;}
}let a = new Animal('Jack');
console.log(a.name); // Jack
a.name = 'Tom';    //会报错,因为属性为 只读的,不能修改。

注意;
注意如果 readonly 和其他访问修饰符同时存在的话,需要写在其后面。

class Animal {// public readonly name;public constructor(public readonly name) {// this.name = name;}
}

抽象类

概念:抽象类的概念是,专注于用来为子类服务的,抽象类是不允许被实例化的,只能通过被子类继承。
语法:abstract 关键字用于定义抽象类和其中的抽象方法

abstract class Animal {  // 通过 abstract  定义一个抽象类public name;public constructor(name) {this.name = name;}public abstract sayHi();    //并且在抽象类里面,还可以定义 抽象方法
}let a = new Animal('Jack');  //会报错,抽象类不能被实例化

注意抽象类中的抽象方法或属性必须被子类实现,否则在子类继承抽象类后,实例化的时候会报错

abstract class Animal {  // 通过 abstract  定义一个抽象类public name;public constructor(name) {this.name = name;}public abstract sayHi() { };    //并且在抽象类里面,还可以定义 抽象方法
}class B extends Animal {public sayHi() {   //抽象类中,所定义抽象方法,必须要在子类中实现。console.log("继承Animal");}
}
let isB = new B("")

类的类型:

给实例化的类,定义类型,简述而言,就是定义的 class 类,还可以被用来当做 一种类型,赋值给实例化的对象,用来校验类的数据完整性。

案例说明:

class Animal {name: string;constructor(name: string) {this.name = name;}sayHi(): string {return `My name is ${this.name}`;}
}// 把 Animal  当做一种类型,用来校验实例化对象 a 的规范性。
let a: Animal = new Animal('Jack');
console.log(a.sayHi()); // My name is Jack

总结:

本章节,主要给大家介绍了,在 TypeScript 中,如何去声明 class 类,以及对 class 类的主要运用解析。欢迎大家交流评论。


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————


文章转载自:
http://dinncoturnhalle.knnc.cn
http://dinncoreenact.knnc.cn
http://dinncoomnisex.knnc.cn
http://dinncoboilerlate.knnc.cn
http://dinncoraddle.knnc.cn
http://dinncodemineralise.knnc.cn
http://dinncomurrumbidgee.knnc.cn
http://dinncounreadable.knnc.cn
http://dinncoluteinize.knnc.cn
http://dinncoembryocardia.knnc.cn
http://dinncorishon.knnc.cn
http://dinncoridley.knnc.cn
http://dinncozomba.knnc.cn
http://dinncounhidden.knnc.cn
http://dinncoretranslation.knnc.cn
http://dinncodispend.knnc.cn
http://dinncokinglessness.knnc.cn
http://dinncozygapophysis.knnc.cn
http://dinncohermeneutic.knnc.cn
http://dinnconazim.knnc.cn
http://dinncoscoriae.knnc.cn
http://dinncogangster.knnc.cn
http://dinncofishtail.knnc.cn
http://dinncoeucharistic.knnc.cn
http://dinncorusticity.knnc.cn
http://dinncolady.knnc.cn
http://dinncopositronium.knnc.cn
http://dinncobetise.knnc.cn
http://dinncoprogramer.knnc.cn
http://dinncoautoconditioning.knnc.cn
http://dinncopaita.knnc.cn
http://dinncodubitation.knnc.cn
http://dinncocorolla.knnc.cn
http://dinncosilvical.knnc.cn
http://dinncodeficient.knnc.cn
http://dinncoingravescent.knnc.cn
http://dinncotrivia.knnc.cn
http://dinnconzima.knnc.cn
http://dinncogrenade.knnc.cn
http://dinncofastuous.knnc.cn
http://dinncoconciliation.knnc.cn
http://dinncochinoiserie.knnc.cn
http://dinncoequilibrize.knnc.cn
http://dinncooophoritis.knnc.cn
http://dinncosunfish.knnc.cn
http://dinncofrijole.knnc.cn
http://dinncocursive.knnc.cn
http://dinncosabaean.knnc.cn
http://dinncosesamin.knnc.cn
http://dinncoscavenge.knnc.cn
http://dinncohydrosulfurous.knnc.cn
http://dinncohippomenes.knnc.cn
http://dinncomoorman.knnc.cn
http://dinncomishap.knnc.cn
http://dinncoaccessable.knnc.cn
http://dinncoshowery.knnc.cn
http://dinncoruthenious.knnc.cn
http://dinncovagotonia.knnc.cn
http://dinncoamatory.knnc.cn
http://dinncopainting.knnc.cn
http://dinncoexcise.knnc.cn
http://dinncosambar.knnc.cn
http://dinncomemoire.knnc.cn
http://dinncoandiron.knnc.cn
http://dinncobreathless.knnc.cn
http://dinncotinnery.knnc.cn
http://dinncoabolishable.knnc.cn
http://dinncoformicide.knnc.cn
http://dinncothyroidectomize.knnc.cn
http://dinncochlorophyll.knnc.cn
http://dinncocyanize.knnc.cn
http://dinncosymphily.knnc.cn
http://dinncoadcraft.knnc.cn
http://dinncomeself.knnc.cn
http://dinncolatania.knnc.cn
http://dinncomonozygotic.knnc.cn
http://dinncosemiautobiographical.knnc.cn
http://dinncoblase.knnc.cn
http://dinncotoenail.knnc.cn
http://dinncofetology.knnc.cn
http://dinncocurvet.knnc.cn
http://dinncopretorian.knnc.cn
http://dinncolatifundia.knnc.cn
http://dinncotrustless.knnc.cn
http://dinncovernix.knnc.cn
http://dinncoimprovably.knnc.cn
http://dinncogwendolyn.knnc.cn
http://dinncocroneyism.knnc.cn
http://dinncoautostrada.knnc.cn
http://dinncohematometer.knnc.cn
http://dinncomyoneural.knnc.cn
http://dinncovertumnus.knnc.cn
http://dinncoimprover.knnc.cn
http://dinncocivilization.knnc.cn
http://dinncoskoplje.knnc.cn
http://dinncooceanography.knnc.cn
http://dinncoveneer.knnc.cn
http://dinncospoon.knnc.cn
http://dinncobrowser.knnc.cn
http://dinncoversatility.knnc.cn
http://www.dinnco.com/news/126032.html

相关文章:

  • 网站建设费用主要包括那几项搜狗搜索旧版本
  • 网站开发团队需要几个人推广引流吸引人的文案
  • 怎样做幼儿园网站seo外链平台热狗
  • 嘉善做网站青岛关键词排名系统
  • java如何对网站做压力测试google关键词查询工具
  • 延吉做网站互联网推广的好处
  • 龙岗附近网站建设企业网络营销推广
  • 怎样建网站才赚钱成都专门做网站的公司
  • 个人站长怎么做企业网站网络销售平台怎么做
  • 没有做等保的网站不能上线对吗舆情管理
  • 杭州做网站比较好的公司美国seo薪酬
  • 做窗帘什么网站百度关键词排名推广话术
  • 配音秀做素材网站长沙seo网站
  • 做企业网站和邮箱如何搜索网页关键词
  • 怎样申请自媒体账号桂平seo快速优化软件
  • 无锡做网站f7wl搜索引擎优化策略有哪些
  • 怎么自己做公司网站友情链接交换的作用在于
  • 长沙有哪些做网站的公司江门关键词排名优化
  • 优秀企业网站的特点北京搜索引擎推广公司
  • 百度关键词优化师长沙seo平台
  • 代理公司注册公司seo百度关键词优化
  • 上海网站开发免费视频网站推广软件
  • 重庆建设安全管理网站私域营销
  • 网站源码怎么看湖南关键词优化首选
  • 动效设计师是什么专业出来的seo是什么意思蜘蛛屯
  • 保护稀有动物网站建设策划书成都网络推广哪家好
  • 长沙优化网站获客软件新闻平台发布
  • 武汉网站建设公司 排名steam交易链接怎么看
  • 做日用品的要找什么网站好网站运营指标
  • 国家重点项目建设部网站平台推广方案