首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSHint不处理defineProperty语法吗?

JSHint不处理defineProperty语法吗?
EN

Stack Overflow用户
提问于 2014-03-10 08:48:43
回答 1查看 104关注 0票数 0

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

代码语言:javascript
复制
    Object.defineProperty(this, "color", {
        get : function() {
            return color;
        },
        set : function(newVal) {
            color = newVal;
            this.path.attr("stroke", color);
        } 
    });

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

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 08:57:34

color确实是未定义的。你需要把信息储存在其他地方。

你可以通过关闭:

代码语言:javascript
复制
var color;
Object.defineProperty(this, "color", {
    get : function() {
        return color;
    },
    set : function(newVal) {
        color = newVal;
        this.path.attr("stroke", color);
    } 
});

或者使用另一个不可枚举的属性(这样它就不会出现在for in上)和不可配置的属性(以避免重写):

代码语言:javascript
复制
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);
    } 
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22295600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档