ts中的class类(批量创建对象)

//class类 class sayWords { //创建两个变量(变量的值必须初始化,若没有初始化,需要在构造函数中为其赋值) userName: string; userSay: string; //给变量赋值 constructor(userName: string, userSay: string) { this.userName = userName; this.userSay = userSay; }userActive() { console.log(`${this.userName}开始说话啦,他说${this.userSay}`) } }//创建对象并引用(实例化对象) const s1 = new sayWords('tom', 'hello')//类成员的属性,都是实例属性,即实例化对象之后,当前实例对象中包含所有的类属性, 类成员方法,都是实例方法 console.log(s1.userName) console.log(s1.userSay) s1.userActive()

和js对象相比,js对象需要通过prototype的方式将对象方法绑定到他的原型上,ts类中函数直接写在class当中。(写法上的区别)
类的继承extends
//类的继承 class Dog{ name:string; static sex:string; constructor(name:string){ this.name = name } run(){ console.log(this.name) } } class Husky extends Dog{ // 父类的构造函数所包含的参数,子类也必须包含,且子类必须含有super constructor(name:string,age:number){ super(name) //给属性赋值必须在super之后 this.age = 2 } age:number }

【ts中的class类(批量创建对象)】类成员修饰符
public 公共属性(默认修饰符)
private 私有属性 只能在类的本身被调用而不能在类的实例或者类的子类中调用
protect 保护属性 只能在类和其子类中被调用,不能在类的实例(new Dog())中被调用
readonly 只读属性 必须给该属性初始化并且不能更改
static 静态属性 static 静态属性 可以通过类来调用 Dog.sex,也可以通过子类去调用Husky.sex
//类的构造函数的属性,也可以给他添加修饰符 class Animal{ //相当于在当前类中声明了一个公共的name,name就变成了实例属性 // name:string; constructor(public name:string){} }

抽象类 abstract(只能被继承,而不能被实例化)
可以用来封装多个公用的函数,提高代码的复用性
abstract class AbCla{ eat(){ console.log('eat') } } class AbChild extends AbCla{ name:string; constructor(name:string){ super() this.name = name } }let ab = new AbChild('hah') ab.eat()

    推荐阅读