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

短视频网站php源码免费张家口网站建设电话

短视频网站php源码免费,张家口网站建设电话,4399影视免费观看高清,招生型网站建设目录 类的概念类的继承 #xff1a;类的存取器#xff1a;类的静态方法与静态属性#xff1a;类的修饰符#xff1a;参数属性#xff1a;抽象类#xff1a;类的类型: 总结#xff1a; 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。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分别是 public、private 和 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); // Tomprivate 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://www.hkea.cn/news/14581584/

相关文章:

  • 临沂网站开发糖果网站建设策划书模板
  • 网站换服务器平面广告设计作品集
  • 哪些网站可以做商家纺织行业网站怎么做吸引人
  • 建设网站服务器怎么选广告公司名称取名
  • 做招聘海报的网站ins做甜品网站
  • diy网站开发公司如何注册一家公司
  • 新版的百度网址大全个人做网站seo
  • 网站网址大全360建筑网是什么网站
  • 做兽设的网站网站建设用款
  • 神兵网站建设义乌app制作公司
  • 外贸网站模板 免费推广有什么好方法
  • 网站服务器权限图片头像设计制作
  • 海珠电子商务网站建设微信推广小程序
  • 一个网站做两种产品娱乐网站制作
  • 宁波优化网站哪家好温州设计集团网站建设
  • 建网站用什么系统星斗科技 网站建设
  • 贵州网站备案网站运营模式有哪些
  • cms快速建站网站部兼容ie6
  • 商业网站服务怎么用ppt做网站设计
  • 卓业网站建设wap网站建设方案 pdf
  • 徐州中小企业网站制作微信公众号怎么开通免费
  • 怎样网络营销推广整站seo技术搜索引擎优化
  • 怎么样做长久的电影网站百度网盘资源分享
  • win2008系统asp网站建设长春建设网站制作
  • 河北网站建设价格低专业的网店交易平台
  • 大连网站设计九必选仟亿科技网站引导页怎么做的
  • 企业网站开发意义中国三大生产建设兵团
  • 标准网站建设费用红酒营销 网站建设
  • f1意大利站最新排名泰安市58同城招聘网
  • 交换广告是两个网站做友情链接吗网上商城搭建