请老师检查下,理解的是否正确?
来源:4-6 项目作业
不厌_
2021-07-03 21:54:57
相关代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
class Person {
// 构造方法,添加实例属性
constructor(name, age) {
this.name = name;
this.age = age;
}
// 在原型对象上添加speak方法
speak() {
console.log(`${this.name}正在说话`);
}
// 添加静态方法
static say() {
console.log('Parent');
}
}
// 添加父类静态属性
Person.sign = 'Par';
// 子类sub继承父类Person
class Sub extends Person {
constructor(name, age) {
// 作为函数使用,super代表父类的构造方法,但是this指向子类的实例,因为要给子类实例添加实例属性
super(name, age);
// 作为对象使用,在构造方法内使用,super代表父类原型对象,内部this指向子类的实例(同一般方法内使用一样)
// super.speak(); //xiaoming正在说话
}
// 作为对象使用,在一般方法内使用,super代表父类原型对象,内部this指向子类的实例
speak() {
super.speak();
console.log('sub speak');
}
// 作为对象在静态方法内使用,super代表父类,其中的this指向子类,所以不可访问实例属性,但是静态属性(类的属性)可以访问
static say() {
super.say();
console.log(super.sign, this.age);
}
}
let xiaoming = new Sub('xiaoming', 18);
console.log(xiaoming.name, xiaoming.age); //xiaoming 18
xiaoming.speak(); //xiaoming正在说话 sub speak
Sub.say();//Parent Par undefined
</script>
</body>
</html>
1回答
同学你好,关于super的理解没问题,总结的很全面,继续加油,祝学习愉快!
相似问题