function Object.create(o) {
     function F() {} 
     F.prototype = o;
     return new F(); 
}

Supongo que esto es equivalente a la implementación actual de ES6 de Object.create.

  • ¿Cuál era la versión anterior (claramente cambió porque la palabra clave new no existía)? El original. Esta es una pregunta fáctica sobre la historia de Javascript, que se puede responder, no entiendo por qué se eliminó la anterior, así que la aclaro.
  • ¿Es la definición sin new equivalente a la que lo tiene?
  • Si cambió, ¿hubo otros (por el autor de Good Parts u oficialmente)? p.ej. ES5, si no es equivalente a ES6.
-1
asker of prophecy 22 ene. 2021 a las 11:36

1 respuesta

La mejor respuesta

¿Cuál era la versión anterior (claramente cambió ya que la nueva palabra clave no existía)?

No había ninguno. new siempre ha existido en JavaScript.

¿Es la definición sin new equivalente a la que lo tiene?

Hasta que se agregó Object.create a la biblioteca estándar en ES5, no había ninguna versión sin new. La versión estándar crea un objeto con el prototipo dado directamente, en lugar de tener que hacer a través de una llamada al constructor, pero el resultado es el mismo, excepto que no se crea ninguna función constructora innecesaria.

Si cambió, ¿hubo otros (por el autor de Good Parts u oficialmente)? p.ej. ES5, si no es equivalente a ES6.

No cambió. La versión estándar se agregó en ES5 (no ES2015 / ES6) y no ha cambiado sustancialmente desde entonces. (El texto de la especificación ha cambiado porque la especificación en su conjunto ha cambiado bastante desde entonces, pero los pasos fundamentales tomados y el resultado son los mismos).

1
T.J. Crowder 22 ene. 2021 a las 09:38