JSHint不处理defineProperty语法?

时间:2014-03-10 08:48:43

标签: javascript jshint

我在构造函数中有这段代码:

    Object.defineProperty(this, "color", {
        get : function() {
            return color;
        },
        set : function(newVal) {
            color = newVal;
            this.path.attr("stroke", color);
        } 
    });

JSHint警告“颜色”未定义。在使用defineProperty进行配置之前,我应该以某种方式定义“颜色”吗?

(我尝试在defineProperty中使用'this.color',但这会导致无限循环)

感谢

1 个答案:

答案 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);
    } 
});