¿Por qué Babel usa setPrototypeOf para la herencia cuando ya hace Object.create (superClass.prototype)?

Publicar el siguiente código en elBabel REPL

class Test {

}

class Test2 extends Test {

}

obtienes estoinherits función

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
  }
  subClass.prototype = Object.create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      enumerable: false,
      writable: true,
      configurable: true
    }
  });
  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
}

Me pareció bien hasta que me di cuenta de que estaba haciendo ambas cosas.Object.create en el prototipoy a setPrototypeOf llamada. No estaba tan familiarizado consetPrototypeOf así que fui alMDN En donde dice:

Si le importa el rendimiento, debe evitar configurar el [[Prototipo]] de un objeto. En su lugar, cree un nuevo objeto con el [[Prototipo]] deseado usando Object.create ().

Lo cual es confuso para mí ya que usan ambos. ¿Por qué es este el caso?

¿Debería la línea ser

if (superClass && !superClass.prototype)

para cuando el prototipo está desarmado, pero todavía tiene un__proto__?

Respuestas a la pregunta(1)

Su respuesta a la pregunta