1. 类的基本用法
es5造类
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.sayName = function(){
return this.name;
}
let p1 = new Person('小玉米',16)
console.log(p1)//{"name":"小玉米","age":16}
es6造类
class Person{
//实例化的时候会立即被调用
constructor(name,age){
this.name = name;
this.age = age;
}
// sayName(){
// return this.name;
// }
// sayAge(){
// return this.age;
// }
}
let p2 = new Person('小玉米',16);
console.log(p2);//Person {name: "小玉米", age: 16}
// 也可以通过Object.assign()方法,一次性向类中添加多个方法
Object.assign(Person.prototype,{
sayName(){
return this.name;
},
sayAge(){
return this.age;
}
})
let p3 = new Person('小玉米',16);
console.log(p3);
2. 类的继承
使用extends关键字
// 父类
class Animal{
constructor(name,age){
this.name = name;
this.age = age;
}
sayName(){
return this.name;
}
sayAge(){
return this.age;
}
}
// 子类
class Dog extends Animal{
constructor(name,age,color){
super(name,age);//超类的意思,会调用父类的constructor
//super(name,age)相当于 Animal.call(this,name,age);
this.color = color;
}
sayColor(){
return `${this.name}`
}
//重写父类的方法
sayName(){
return this.name + super.sayAge() + this.color;
}
}
let d1 = new Dog('小黄',28,'red');
console.log(d1.sayName());//小黄28red
console.log(d1.sayColor());//小黄
console.log(d1.sayName());//小黄28red
网友评论