校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 语法相关-操作符相关
题目

ES5/ES6 的继承除了写法以外还有什么区别?

解答

先看ES5的继承(原型链继承)

function a() {
this.name = 'a';
}
a.prototype.getName = function getName() {
return this.name
}
function b() {}
b.prototype = new a();
console.log(b.prototype.__proto__ === a.prototype); // true
console.log(b.__proto__ === a); // false
console.log(b.__proto__); // [Function]

ES6继承

class A {
constructor(a) {
this.name = a;
}
getName() {
return this.name;
}
}

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

console.log(B.prototype.__proto__ === A.prototype); // true
console.log(B.__proto__ === A); // true
console.log(B.__proto__); // [Function: A]

对比代码可以知道,子类的继承都是成功的,但是问题出在,子类的 __proto__ 指向不一样。
ES5 的子类和父类一样,都是先创建好,再实现继承的,所以它们的指向都是 [Function] 。
ES6 则得到不一样的结果,它指向父类,那么我们应该能推算出来,它的子类是通过 super 来改造的。

C 1条回复 评论
鹜落霜洲

学习接口测试的朋友可以使用国产的接口测试工具apipost,简单易学是一款很容易上手的接口测试工具

发表于 2022-12-10 23:00:00
0 0