(回顾)JS中class的继承
格式:extends+super
class 子类名 extends 父类名{
constructor(属性名1,属性名2,...){
super(父类属性名1,父类属性名2,...);
this.子类属性名1=子类属性名1;
this.子类属性名2=子类属性名2;
...
}
子类方法名(){
}
}
例子
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
say() {
console.log(this.name, this.age);
}
}
class Dog extends Animal {
constructor(name, age, sex) {
super(name);
this.sex = sex;
}
say() {
console.log("我的名字是" + this.name + ",是个" + this.sex + "生");
}
}
var d = new Dog("小花", 3, "女");
d.say();
JS模拟面向对象的继承机制
代码
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
say() {
console.log(this.name, this.age);
}
}
class Dog {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
Dog.prototype = new Animal();
Dog.prototype.say = function() {
console.log("我的名字是" + this.name + ",今年" + this.age + "岁");
}
var d = new Dog("小花", 3);
d.say();
分析
先定义一个Animal类再定义一个Dog类,Dog.prototyp完全使用Animal内部的属性和函数
使它继承Animal所有属性和方法
所以在Dog类的构造函数里可以访问和修改Animal中的定义的姓名和年龄