Allen Wirfs-Brock (2015-01-16T20:02:57.000Z)
d at domenic.me (2015-01-28T19:26:58.792Z)
Since the above class definition does not include an explicit constructor body, it gets the equivalent of constructor(...args) {super(...args)} as its implicit constructor definition A 'super()' call throws if the NewTarget is null (ie, if the constructor is invoked via [[Call]] ) If you want to inherit call behavior you need to code it as: ```js class MyDate extends Date { constructor(...args) { if (new.target===null) return super.constructor(...args) super(...args); } } ``` That's assuming 'new.target' makes it into ES6. Without it you would have to do something like: ```js class MyDate extends Date { constructor(...args) { let calledAsFunction=true; try { let thisValue = this; //can't reference 'this' prior to 'super()' in a [[Construct]] call of a derived function } catch (e} { let calledAsFunction = false } if (calledAsFunction) return super.constructor(...args) super(...args); } } ```