I'm trying to use defineProperty to made attributes not appear in for...in cycle, but it doesn't work. Is this code correct?
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);
}
                Item does not have a property named nonEnum (check it out). It is a (constructor) function that will create an object that has a property called nonEnum.
So this one would work:
var test = new Item();
Object.defineProperty(test, "nonEnum", { enumerable: false });
You could also write this function like this:
function Item() {
    this.enumerable = "enum";
    Object.defineProperty(this, "nonEnum", { 
        enumerable: false, 
        value: 'noEnum' 
    });
}
jsFiddle Demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With