【发布时间】:2010-12-07 13:00:09
【问题描述】:
我认为下面的代码会让问题更清楚。
// 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);
【问题讨论】:
-
为什么不能使用
new关键字? -
丹尼尔,事实上你可以,我错误地认为在这种情况下我不能。周五下午的疲劳,我猜 ;)。
-
J-P,以便其他人在必要时可以澄清问题。
-
有史以来最奇怪的“尚未解决”和社区问题。
-
我已经创建了一个装饰器来处理这个问题,请在这里查看我的答案:stackoverflow.com/a/44061744/427622
标签: javascript oop constructor instance