前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端测试题:在类的继承中,关于super的说法错误的是?

前端测试题:在类的继承中,关于super的说法错误的是?

作者头像
舒克
发布2020-03-25 16:21:16
3K0
发布2020-03-25 16:21:16
举报

考核内容: 类的继承

题发散度: ★★

试题难度: ★

解题思路:

Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。

代码语言:javascript
复制
class Point {
}

class ColorPoint extends Point {
}

上面代码定义了一个ColorPoint类,该类通过extends关键字,继承了Point类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个Point类

代码语言:javascript
复制
class ColorPoint extends Point {
constructor(x, y, color) {
super(x, y); 
// 调用父类的constructor(x, y)
this.color = color;
  }

  toString() {
return this.color + ' ' + super.toString(); 
// 调用父类的toString()
  }
}

上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象

super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。

super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。

代码语言:javascript
复制
class A {}

class B extends A {
constructor() {
super();
  }
}

子类B的构造函数之中的super(),代表调用父类的构造函数。这是必须的,否则 JavaScript 引擎会报错。

参考代码:

super是父类的引用,我们可以通过super来调用父类的方法和属性。

如果没有 supper() 则会报错

答案

代码语言:javascript
复制
B、 super相当于子类的引用
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档