- 打卡等级:即来则安
- 打卡总天数:28
- 打卡月天数:7
- 打卡总奖励:7961
- 最近打卡:2025-12-22 17:16:30
管理员
- 积分
- 24106
|
作用:class关键字是原型对象的一个语法糖,让原型对象更加清晰class类的特点- 定义的class类,它的数据类型是函数,类名是指向其构造函数的索引,即生成的实例是构造函数的实例
- new class名()创建一个实例对象,该实例对象是由构造函数初始化的,所以他的属性是构造函数包含的属性,构造函数外面的就是继承属性了
- class类体里边有一个构造函数,即constructor(){}函数,如果没有定义会自动生成一个空的constructor函数
- class里面的函数不需要关键系function定义,直接函数名就可以
- __prpto__指向构造方法的原型对象
- hasOwnProperty判断一个对象中是否含有属性和方法,返回布尔类型
静态方法- 在函数前添加static关键字,声明改为静态方法,静态方法不用实例化就可以通过类名直接调用,非静态方法必须通过实例化之后才可以调用
- 静态方法是不可以被实例对象继承的,所以类创建的对象不可以调用静态方法或静态属性,会报错
- 静态方法可以直接被类调用,即类名.静态方法的方式
- 静态方法中的this值指向类而非实例
- 静态方法和非静态方法可以重名显示
静态属性(ES6暂不支持,ES7有提案,需babel转换)- 在属性前面添加static关键字是不可以将属性变为静态属性的,所谓的静态属性指的是,该属性是类的属性而不是实例化的属性,即不需要实例化就可以方法的属性
class Person { static type = '人类' constructor(name,age){ this.name = name this.age = age } getName(){ return this.name } getAge(){ return this.age }}类的继承class students extends Person{ super('老刘',20) //Parent.constructor.call(this,'老刘',20);}TS中class用法class Person { name: string static sex: string = '男' public gy = '公有的' //默认是公有的,可以被任何地方访问 private sy = '私有的' //只能在当前类内部访问 protected bh: string = '保护的' //只能在当前类内部和子类内部访问 constructor(n: string) { this.name = n console.log('保护1', this.bh) } static setSex(): string { //static属性要和static方法配合使用 return this.sex } syFun(val: string) { this.sy = val return this.sy }}class person extends Person { constructor(n: string) { super(n) console.log(this.gy) console.log('保护2', this.bh) }}const p1 = new Person('欧文')const p2 = new person('詹姆斯')
|
|