1、实例属性和实例方法
class People{
//构造函数
constructor(name,age){
//实例属性
this.name = name;
this.age = age;
}
//实例方法
toString(){
return `${this.name},${this.age}`;
}
}
var p = new People('zhang san', 29);
console.log(p.name);
console.log(p.age);
console.log(p.toString());2、取值函数和存值函数(getter/setter)
class People{
//私有属性
#age = 0;
get age(){
return this.#age;
}
set age(value){
if(value>0 && value<=100){
this.#age = value;
}else{
throw 'error age.'
}
}
}
var p = new People();
p.age = 29;
console.log(p.age);注意:getter和setter内部不能使用this.age,否则会出现递归陷入死循环:
//Firefox
Uncaught InternalError: too much recursion
//Chrome & Edge
Uncaught RangeError: Maximum call stack size exceeded
3、静态属性和实例方法
class People{
//静态属性
static name = 'zhang san';
static age = 29;
//静态方法
static toString(){
return `${this.name},${this.age}`; //this指的是类,不是实例
}
}
console.log(People.name);
console.log(People.age);
console.log(People.toString());4、ES6类的继承
class Person extends People{
constructor(){
//调用父类构造函数
super('zhang san', 29);
}
}
var p = new Person();
console.log(p.name);
console.log(p.age);
console.log(p.toString());注意:子类构造函数一定要调用一下父类构造函数,否则运行会出错:
//Firefox
Uncaught ReferenceError: must call super constructor before using 'this' in derived class constructorr
//Chrome & Edge
Uncaught ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor
评论(0)
暂无评论。