老师,为什么这里输出的结果不一样的

来源: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>

https://img.mukewang.com/climg/619f44f00892dd7d03170199.jpg

写回答

1回答

好帮手慕小李

2021-11-25

同学你好,这道题的确是选C,同学与题目中的选项不一样,是因为同学写的name是js的关键字比较特殊,正常情况下我们不能使用name,可以理解为name就是class类的一个原有属性,且不能被覆盖,当同学使用this.name时页面就会输出Child,相当于是Child.name = Child。就等于把Child的名字输出出来了。

https://img.mukewang.com/climg/619f5b0909e76dc006830770.jpg

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

https://img.mukewang.com/climg/619f5b3a0908730406090764.jpg

这样同学再根据代码逻辑进行分析就对了。

同学自己试试,祝学习愉快~

0

0 学习 · 17877 问题

查看课程