我在构造函数中有这段代码:
Object.defineProperty(this, "color", {
get : function() {
return color;
},
set : function(newVal) {
color = newVal;
this.path.attr("stroke", color);
}
});
JSHint警告“颜色”未定义。在使用defineProperty进行配置之前,我应该以某种方式定义“颜色”吗?
(我尝试在defineProperty中使用'this.color',但这会导致无限循环)
感谢
答案 0 :(得分:1)
color
确实未定义。您需要将信息存储在其他地方。
你可以通过关闭来实现:
var color;
Object.defineProperty(this, "color", {
get : function() {
return color;
},
set : function(newVal) {
color = newVal;
this.path.attr("stroke", color);
}
});
或者使用另一个不可枚举的(因此它不会显示在for in
上)和不可配置(以避免覆盖)属性:
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);
}
});