ES5模拟类的构造函数
function Person (name, age) {
this.name = name
this.age = age
}
Person.prototype.sayHello = function () {
console.log('my name is ' + this.name)
}
let p = new Person('smith', 25)
p.sayHello() // my name is smith
ES6的类
类的构成
- 构造函数方法
- 实例方法
- 获取函数get
- 设置函数set
- 静态类方法
- 静态类属性 (ES7+)
- 私有属性及方法 (ES13)
- 实例属性新写法 (ES13)
构造函数方法
constructor关键字用于在类定义块内部创建类的构造函数。方法名constructor会告诉解释器在使用new操作符创建类的新实例时,应该调用这个函数。构造函数的定义不是必需的,不定义构造函数相当于将构造函数定义为空函数。
class Person {
constructor (name, age) {
this.name = name
this.age = age
console.log('执行了')
}
}
let p = new Person('smith', 25) // 执行了
console.log(p.name) // 'smith'
实例方法
es6类的实例方法默认定义在原型中
class Person {
constructor (name, age) {
this.name = name
this.age = age
}
sayHello () {
console.log('my name is ' + this.name)
}
}
let p = new Person('smith', 25)
p.sayHello() // my name is smith
console.log(p.hasOwnProperty('sayHello')) // false
console.log(p.__proto__.hasOwnProperty('sayHello')) // true
获取函数与设置函数
class Person {
constructor (