title: JavaScript: How to create a new instance of a class without using the new keyword?
body: <p>I think the following code will make the question clear.</p>
  
  <pre><code>// 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);
  </code></pre>