我在构造函数函数中具有此代码:
Object.defineProperty(this, "color", {
get : function() {
return color;
},
set : function(newVal) {
color = newVal;
this.path.attr("stroke", color);
}
});
jshint警告说"颜色"未定义。在用DefineProperty配置之前,我应该以某种方式定义"颜色"?
(我尝试在DefineProperty内使用'this.color',但这导致无限循环)
谢谢
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);
}
});