什么是class
class就是类,和ES5中的构造函数十分相似,绝大部分功能都是一致的,但是class的写法,能让对象原型的功能更加清晰,更加符合面向对象语言的特点。
它是构造函数的另一种写法
class Person {
}
typeof Person // "function"
Person.prototype.constructor === Person // true
使用
通过new来生产一个实例
class Person {
}
let json = new Person()
constructor
每个类都必须有一个constructor,如果没有显示声明,js 引擎会自动给它添加一个空的构造函数:
class Person {
}
// 等同于
class Person {
constructor () {
}
}
属性和方法
定义于 constructor 内的属性和方法,即定义在 this 上,属于实例属性和方法,否则属于原型属性和方法。
class Person {
constructor (name) {
this.name = name
}
say () {
console.log('hello')
}
}
let jon = new Person()
jon.hasOwnProperty('name') // true
jon.hasOwnProperty('say') // false
提升
class 不存在变量提升。
静态方法
不需要通过实例对象,可以直接通过类来调用的方法,其中的 this 指向类本身
class Person {
static doSay () {
this.say()
}
static say () {
console.log('hello')
}
}
Person.doSay() // hello
静态方法可以被子类继承