使用babel,class继承后,父类的new.target等于undefined,有办法解决吗?
问题描述
使用babel,class继承后,父类的new.target等于undefined,有办法解决吗?
问题出现的环境背景及自己尝试过哪些方法
https://github.com/babel/babe...
相关代码
var A = class A {
constructor() {
console.log(new.target, 'a');
}
}
var B = class B extends A {
constructor() {
super();
console.log(new.target, 'b');
}
}
var obj = new B('b'); // 输出 false
直接在node上跑返回的是
[Function: B] 'a'
[Function: B] 'b'
但是如果用了babel,则返回
undefined 'a'
[Function: B] 'b'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
暂时用this.constructor替换new.target,绕过
因为babel转译之后,子类B里面的
super()
被替换成了A.constructor.call()
, 这样new.target
当然就是undefined
没办法解决,不是所有特性被编译后都能和新版表现一致的,你得想办法绕过去