老师,为什么这里输出的结果不一样的
来源: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以外的任何单词如下:
这样同学再根据代码逻辑进行分析就对了。
同学自己试试,祝学习愉快~
相似问题