ES6中的class相当于ES5中的构造函数
constructor是class中的构造方法(同es5的构造方法一样)
class本身就是函数, 而class本身就指向其自身的constructor构造函数
// es5
function Person(name) {
this.name = name;
}
----------
// es6
class Person {
constructor(name){
this.name = name;
}
}
typeof Person // "function"
Person === Person.prototype.constructor // true
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。
class必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
class Person {
//...
}
// 等同于
class Person {
constructor() {}
//...
}
constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。
class Person1 {
constructor(name){
this.name = name;
}
log(){
console.log('person1: '+ this.name)
}
}
class Person {
constructor(name) {
this.name = name;
// return new Person1(name);
}
log(){
console.log('person: '+ this.name)
}
}
let person = new Person('lyule');
person.log(); // person1: lyule