我想继承一个Proxied
ES6 类。它在 Firefox 和 Chrome 中运行良好,但 Safari 10 会引发错误:
let SuperClass = class {
constructor() {
console.log('SuperClass constructor')
}
}
let ProxiedSuperClass = new Proxy(SuperClass, {});
let SubClass = class extends ProxiedSuperClass {
constructor() {
super();
console.log('SubClass constructor')
}
}
var s = new SubClass();
// Expected output (Firefox, Chrome):
// SuperClass constructor
// SubClass constructor
// Safari output:
// function is not a constructor (evaluating 'super()')
因此,Safari 似乎在尝试扩展Proxy
,而 Firefox 和 Chrome 则在扩展SuperClass
。
这里的正确行为是什么?代理一个类是不可能的(或定义明确的)?或者我可以以某种方式暗示 Safari 做“正确的事情”,即子类SuperClass
而不是Proxy
?