changed to Object.create

This commit is contained in:
Jeena Paradies 2012-07-19 15:38:17 +02:00
parent df6c8bf0e2
commit 8425831450

View file

@ -10,34 +10,22 @@ Factory.prototype.new = function () {
throw arguments[0] + ' is not a function'; throw arguments[0] + ' is not a function';
var module = arguments[0]; var module = arguments[0];
module.prototype = new ExtensibleObject({
notificationCenter: this.notificationCenter,
factory: this
});
return new (module.bind.apply(module, arguments))(); return Object.create(
} module.prototype,
{
function ExtensibleObject(properties) { factory: {value: this},
for(var propertyName in properties) { notificationCenter: {value: this.notificationCenter}
this.__defineGetter__(propertyName, function() {
return properties[propertyName]
});
this.__defineSetter__(propertyName, function(val) {
properties[propertyName] = val;
});
} }
);
} }
function Player(name) { function Player(name) {
this.name = name; this.name = name;
console.log("Created Player: " + name);
console.log("Player.notificationCenter " + this.notificationCenter);
} }
function NotificationCenter() { function NotificationCenter() {
console.log("Created NotificationCenter"); this.foo = "a"
} }
NotificationCenter.prototype.alert = function(a) { NotificationCenter.prototype.alert = function(a) {
@ -47,8 +35,7 @@ NotificationCenter.prototype.alert = function(a) {
var factory = new Factory(); var factory = new Factory();
var player = factory.new(Player, "jeena"); var player = factory.new(Player, "jeena");
console.log("Player.name " + player.name); console.log(player.notificationCenter);
console.log("New player name: " + player.factory.new(Player, "logsol").notificationCenter.alert);
/* /*