JavaScript: Comment faire pour créer une nouvelle instance d'une classe sans utiliser le mot clé new?

Je pense que le code suivant va faire de la question claire.

//My class
var Class = function() { console.log("Constructor"); };
Class.prototype = { method: function() { console.log("Method");} }

//Creating an instance with new
var object1 = new Class();
object1.method();
console.log("New returned", object1);

//How to write a factory which can't use the new keyword?
function factory(clazz) {
    //Assume this function can't see "Class", but only sees its parameter "clazz".
    return clazz.call(); //Calls the constructor, but no new object is created
    return clazz.new();  //Doesn't work because there is new() method
};

var object2 = factory(Class);
object2.method();
console.log("Factory returned", object2);
  • Pourquoi ne pouvez-vous pas utiliser le new mot-clé?
  • Daniel, en fait, vous pouvez, et j'ai tort, je ne pouvais pas dans ce cas. Vendredi après-midi, la fatigue, je suppose ;).
  • J-P, de manière à clarifier la question si nécessaire.
  • Plus étrange encore ouverte " et la communauté de la question.
  • j'ai créé un décorateur pour gérer cela, veuillez vérifier ma réponse ici: stackoverflow.com/a/44061744/427622