【问题标题】:javascript defineProperty to make an attribute non enumerablejavascript defineProperty 使属性不可枚举
【发布时间】:2012-05-03 10:07:13
【问题描述】:

我正在尝试使用 defineProperty 使属性不出现在 for...in 循环中,但它不起作用。这段代码正确吗?

function Item() {
    this.enumerable = "enum";
    this.nonEnum = "noEnum";
}
Object.defineProperty(Item, "nonEnum", { enumerable: false });

var test = new Item();

for (var tmp in test){
    console.log(tmp);
}

【问题讨论】:

    标签: javascript object constructor ecmascript-5 defineproperty


    【解决方案1】:

    Item 没有名为 nonEnum (check it out) 的属性。它是一个(构造函数)函数,将创建一个具有名为nonEnum 的属性的对象。

    所以这个可以工作:

    var test = new Item();
    Object.defineProperty(test, "nonEnum", { enumerable: false });
    

    你也可以这样写这个函数:

    function Item() {
        this.enumerable = "enum";
        Object.defineProperty(this, "nonEnum", { 
            enumerable: false, 
            value: 'noEnum' 
        });
    }
    

    jsFiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 2013-09-03
      • 2013-01-08
      • 2013-02-05
      • 2015-11-10
      相关资源
      最近更新 更多