2

我想继承一个ProxiedES6 类。它在 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

4

0 回答 0