其实很容易理解这个class,它就是ES5的构造函数进化而来的。
ES5构造函数
// ES5
function Person(name, age) {
this.name = name
this.age = age
this.sing = function(musicName) {
consloe.log("musicName", musicName);
}
}
const person = new Person('刘德华', 22)
console.log(person.name) // 刘德华
console.log(person.age) // 22
person.sing('开心的马骝') // 开心的马骝
ES6---class(类)
// ES6
class Stack {
constructor(name, age) {
this.name = name;
this.age = age;
this.arr = [];
}
in(value) {
this.arr.push(value);
}
top() {
console.log(this.arr[0]);
}
out() {
console.log(this.arr.shift());
}
size() {
console.log(this.arr.length);
}
}
const obj = new Stack();
obj.in('x')
obj.in('y')
obj.in('z')
obj.top() // Z
obj.size() // 3
obj.out() // Z
obj.top() // y
obj.size() // 2
对比之后你不难发现,其实就是把ES5的Person(name, age)抽到ES6的constructor(name, age){}函数中。构造函数中除了属性为函数之外的属性都放到constructor函数中去定义。悟:ES6class中constructor()方法就是new一个实例需要传的参数,也可以传函数作为参数。
构造函数
class类
然后构造函数中定义的方法,直接以funcName(){}的方式写到class中。改良了写法而已
构造函数
class类