diff --git a/Factory.js b/Factory.js new file mode 100644 index 0000000..3b9e1d9 --- /dev/null +++ b/Factory.js @@ -0,0 +1,46 @@ +function Factory() { + this.notificationCenter = new NotificationCenter(); +} + +Factory.prototype.new = function () { + + if (arguments.length < 1) + throw 'Too fiew arguments'; + if (typeof arguments[0] != 'function') + throw arguments[0] + ' is not a function'; + + var klass = arguments[0]; + klass.prototype = new ChuckObject(this.notificationCenter, this); + return new (klass.bind.apply(klass,arguments))(); +} + +function ChuckObject(notificationCenter, factory) { + this.notificationCenter = notificationCenter; + this.factory = factory; +} + +function Player(name) { + this.name = name; + console.log("Created Player"); + console.log("Player.notificationCenter " + this.notificationCenter); +} + +function NotificationCenter() { + console.log("Created NotificationCenter"); +} + +var factory = new Factory(); + +var player = factory.new(Player, "jeena"); +console.log("Player.name " + player.name); + + +/* + +Lala:chuck.js jeena$ node Factory.js +Created NotificationCenter +Created Player +Player.notificationCenter [object Object] +Player.name jeena + +*/ \ No newline at end of file