传统面向对象
在ES6中,calss类作为对象的模板被引入,可以通过class关键字定义类,它可以被看做一个语法糖,让对象原型的写法更加清晰,更加面向对象的编程。本质就是一个函数,就是由ES6里面的语法封装的
类所有的函数不需要写function,且多个函数方法之间不需要添加符号分割
继承
构造函数和原型试面向对象
这是js经典的方法,他用构造函数模拟类,在其内部用this关键字指向实例对象 。 先编写一个构造函数
增加类的方法,通常在构造函数的prototype对象之上。所有对象的实例可以共用这些方法,相比直接在构造函数上增加方法,在原型上prototype上增加方法可以减少内存空间的使用
使用new关键字,生成实例对象
Ts修饰符
我们知道,类class出现的目的,其实就是把一些相关的东西放在一起,方便管理
类中包含两个东西(也叫成员):
- 属性
- 方法
类的成员就是类中所有的属性和方法
TS中通过class关键字可以方便的定义一个类
通过
new关键字可以方便的生产一个类的实例对象,这个生产对象的过程叫实例化
如上,
p1就是Person类的一个实例
还有一点需要注意,就是在实例在new出来的时候,它实际是调用了类中的一个方法进行初始化,这个方法被叫做构造器;一般都会在类中显示地写上constructor方法,如果没有显示定义的constructor,就会调用系统隐示的constructor
类中的成员修饰符
访问修饰符
访问修饰符的作用就是用于限制别人乱用类中的东西
public公开的,谁都能用(默认public)private私有的,仅类自己里头才能使用protected受保护的,仅仅类和类的子类能使用
使用访问修饰符的建议:尽量使用private,一般所有属性都是private,要想访问私有属性可以通过访问器
事实上
ts的访问器其实借助的就是js的访问器,而js的访问器是到高版本里才有的 所以在通过tsc命令编译的时候有个注意点: ts默认生成ES4的代码,我们编译时需要通过--target 某版本指定ts编译的版本
当然也可以在tsconfig.json文件中配置 访问器的好处在于:安全和方便
只读修饰符
readonly 只能读不能写
需要注意的时,即使是
readonly的东西,在初始化之前是可以写,即在constructor中可以初始化或更改
所以,我们知道了,
readonly的属性,仅两个地方可以写:
- 在声明同时赋予初始值
- 在构造函数中赋值或者修改初始值
静态修饰符
静态成员通常用于整个类所共有的一些东西
注意点
以上三种修饰符:访问修饰符、只读修饰符和静态修饰符可以组合修饰同一成员 但需要注意
- 修饰符是可选的,在没有写任何修饰符,默认有个
public - 同类修饰符只能有一个
- 三种修饰符有先后顺序,分别是:访问、静态、只读 即:
【public/static/protected】 【static 】【readonly】