javascript defineProperty使属性不可枚举

javascript defineProperty使属性不可枚举,javascript,object,constructor,ecmascript-5,defineproperty,Javascript,Object,Constructor,Ecmascript 5,Defineproperty,我试图使用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){ conso

我试图使用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);
}

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

所以这一个会起作用:

var test = new Item();
Object.defineProperty(test, "nonEnum", { enumerable: false });
您也可以这样编写此函数:

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