为什么我可以使用 Object.getPrototypeOf(this.constructor.prototype) 而不能在原型方法定义中使用“super”?

问题描述 投票:0回答:1

所以我测试了这段代码:

class C1 {}

C1.prototype. f =function(){ return 1 }

class C2 extends C1 {}

C2.prototype. f =function(){ return super.f()+1 }

它会抛出一个语法错误:“super”关键字在这里意外。

但是如果我这样做:

C2.prototype. f =function(){ return Object.getPrototypeOf(this.constructor.prototype).f() + 1 }

它确实返回 2!

那么有人知道为什么“超级”不起作用吗?我看不出有什么理由。

谢谢!

javascript es6-class prototypal-inheritance javascript-inheritance
1个回答
0
投票

super
是一个
keyword
,意味着它必须被口译员接受,目前只有
class
可以使用它。如果你想要同样的效果,你必须备份你的方法或远程参考它:

class C1 {}

C1.prototype. f =function(){ return 1 }

class C2 extends C1 {}

C2.prototype. f =function(){ return C1.prototype.f.call(this)+1 }
© www.soinside.com 2019 - 2024. All rights reserved.