老师,为什么这里输出的结果不一样的
来源:4-5 选择练习
dawn_eve
2021-11-25 16:06:00
<!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>super</title>
</head>
<body>
<script>
class Parent{
color = 'red'
constructor(name){
this.name=name;
// console.log(this);
}
static pSay(){
console.log(this.name);
}
pShow(){
console.log(this.color);
}
}
class Child extends Parent{
constructor(name){
super(name);
}
static cSay(){
super.pSay();
}
cShow(){
super.pShow();
console.log(super.color);
}
}
const c1 = new Child('c1');
Child.cSay();
c1.cShow();
</script>
</body>
</html>
1回答
同学你好,这道题的确是选C,同学与题目中的选项不一样,是因为同学写的name是js的关键字比较特殊,正常情况下我们不能使用name,可以理解为name就是class类的一个原有属性,且不能被覆盖,当同学使用this.name时页面就会输出Child,相当于是Child.name = Child。就等于把Child的名字输出出来了。

解决方案如下,我们把name换成username,这里注意username可以是除了name以外的任何单词如下:

这样同学再根据代码逻辑进行分析就对了。
同学自己试试,祝学习愉快~
相似问题