color
is indeed undefined. You need to store the information elsewhere.
You could do it via closure:
var color;
Object.defineProperty(this, "color", {
get : function() {
return color;
},
set : function(newVal) {
color = newVal;
this.path.attr("stroke", color);
}
});
Or with another, non-enumerable (so that it doesn't show up on for in
) and non-configurable (to avoid overrides) property:
Object.defineProperty(this, "_color", {
configurable: false,
writable: true,
enumerable: false
});
Object.defineProperty(this, "color", {
get : function() {
return this._color;
},
set : function(newVal) {
this._color = newVal;
this.path.attr("stroke", color);
}
});