类
两种定义方式: 类声明和类表达式. 都不能进行变量提升
构造函数:
每次创建都会调用constructor
使用new吗调用constructor, 默认返回this, 如果返回其他值, 则跟实例没有关联(即用person1 instanceof Person结果是false)
调用new时: this指向新创建的实例. 实例的prototype指向类的prototype
1.类是一种特殊的函数
class classA{}
typeof classA
// 'function'
2.类标识符有protorype属性
classA = classA.prototype.constructor
3.类是一等公民, 可以在数组中定义, 也可以当做函数参数传递
实例
// 补充: 使用new关键字,会默调用constructor, 返回一哥object对象
1.实例之间独立, 实例A!=实例B
2.方法的定义
// 补充: 实例方法等同于对象的属性
[''a'+b]() {}
3.类的静态方法
// 补充: 类的静态方法只能有一个
class classA{
static method() {}
method1()
method2()
}
4.在类外添加静态方法和原型链方法的方法
classA.method()
classA.prototype.method1()
5.继承
extents关键字来实现继承
super相当于classA.constructor, 会调用父类的构造方法, 并将返回值传递给this
this instanceof classA // true
classB extends classA{
constructor(){
console.log(this)
super
}
}
// 代码会报错, 在调用super之前不能使用this