是否可以从JavaScript的ECMAScript 6类继承旧类?

是否可以从JavaScript的ECMAScript 6类继承旧类?,第1张

是否可以从JavaScript的ECMAScript 6类继承旧类?

选择

class
语法后,实际上并没有出路。

问题在于ES6中的继承是通过

this
使用from的返回值对关键字进行后期初始化来完成的,该返回值是from
super()
构造函数,如with
new
.call()
在当前“未初始化”的子实例上“应用”()父构造函数的旧习惯
不再起作用

您仍然可以做的是求助于“寄生继承”-您必须显式构造实例,对其进行扩展,然后

return
再执行以下 *** 作:

function MyDerived() {  var derived = new MyClass('MyDerived');  … // set up properties  return derived;}

使用时

new MyClass
,您将无法正确设置原型。为此,您将需要使用新的ES6
Reflect.construct
函数,该函数将子类作为可选的第三个参数:

function MyDerived() {  var derived = Reflect.construct(MyClass, ['MyDerived'], new.target||MyDerived);  … // set up properties  return derived;}

这具有额外的好处

MyDerived
并不需要与所谓的
new
多(只要你提供的任何
MyDerived
时候
new.target
为空)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4944817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存