There is probably no way to make the `super` semantics just work in all use
cases. But I think that the choice made in ES6 is the right one in order to
have it correctly working in the most naïve (and maybe the most common?) use
cases of method borrowing, i.e., when you don’t have knowledge of — or even you
wilfully ignore — its implementation details. Consider for example:
```js
class MyArray extends Array {
forEach(callback, thisArg) {
// ...
super.forEach(callback, thisArg)
// ...
}
}
```
and somewhere else:
```js
NodeList.prototype.forEach = MyArray.prototype.forEach // or: (new
MyArray).forEach
HTMLCollection.prototype.forEach = MyArray.prototype.forEach
```
Here, I expect that `super.forEach` will continue to point to
`Array.prototype.forEach`. This is because I’m thinking of
`MyArray.prototype.forEach` as a black box that should not change its behaviour
just because I’m moving it around, as it is generally the case with methods of
the builtin library.
—Claude
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss