JavaScript: How to create a new instance of a class without using the new keyword?
Posted
by Alessandro Vernet
on Stack Overflow
See other posts from Stack Overflow
or by Alessandro Vernet
Published on 2009-10-16T23:15:04Z
Indexed on
2010/04/11
13:13 UTC
Read the original article
Hit count: 266
I think the following code will make the question clear.
// 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);
© Stack Overflow or respective owner