¿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__
?