Javascript 子类ES6代理类

Javascript 子类ES6代理类,javascript,es6-class,es6-proxy,Javascript,Es6 Class,Es6 Proxy,我想为一个ProxiedES6类创建子类。它在Firefox和Chrome中运行正常,但Safari 10抛出了一个错误: let SuperClass = class { constructor() { console.log('SuperClass constructor') } } let ProxiedSuperClass = new Proxy(SuperClass, {}); let SubClass = class extends Proxied

我想为一个
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似乎试图扩展代理,而Firefox和Chrome则扩展超类


这里的正确行为是什么?是否不可能(或定义良好)代理一个类?或者我是否可以暗示Safari做“正确的事情”,即子类
超类
,而不是
代理

当您代理一个类时,您实际上只在该构造函数上注册陷阱以及直接在其上定义的任何属性。新的(类)函数仍然有它原来的构造函数和原型链。这就是我所想的——代理的行为应该像原来的对象一样,除非你注册了做其他事情的陷阱。所以我想我应该向Webkit提交一份bug报告?我想是的-不过,也许值得等待其他答案。我自己从来没有使用过
Proxy
,但是Firefox和Chrome的行为对我来说是正确的。