9.2Classes & Constructors / extends

継承には`extends`を使用する

継承には`extends`を使用します。これにより、`instanceof`を壊すことなくプロトタイプの機能を継承できます。

`extends` キーワードは、プロトタイプチェーンを正しく設定する複雑な処理を内部で行ってくれます。これにより、サブクラスのインスタンスがスーパークラスのインスタンスとしても認識される(`instanceof` が正しく機能する)ことが保証されます。`inherits` のようなユーティリティライブラリを使うよりも、言語の標準機能を使う方が簡潔で安全です。

❌ Bad
// bad
const inherits = require('inherits');
function PeekableQueue(contents) {
  Queue.apply(this, contents);
}
inherits(PeekableQueue, Queue);
PeekableQueue.prototype.peek = function () {
  return this.queue[0];
};
✅ Good
// good
class PeekableQueue extends Queue {
  peek() {
    return this.queue[0];
  }
}