Joose.Managed.Property.Attribute = new Joose.Proto.Class('Joose.Managed.Property.Attribute', {
isa : Joose.Managed.Property,
slot : null,
initialize : function () {
Joose.Managed.Property.Attribute.superClass.initialize.apply(this, arguments)
this.slot = this.name
},
apply : function (target) {
target.prototype[this.slot] = this.value
},
isAppliedTo : function (target) {
return target.prototype[this.slot] == this.value
},
unapply : function (from) {
if (!this.isAppliedTo(from)) throw "Unapply of property [" + this.name + "] from [" + from + "] failed"
delete from.prototype[this.slot]
},
getRawValueFrom : function (instance) {
return instance[this.slot]
},
setRawValueTo : function (instance, value) {
instance[this.slot] = value
}
}).c