7

Estoy tratando de usar defineProperty para que los atributos hechos no aparezcan en ... en ciclo, pero no funciona. Es este código correcto?javascript defineProperty para hacer un atributo no enumerable

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

Respuesta

17

Item no tiene una propiedad denominada nonEnum (check it out). Es una función (constructor) que creará un objeto que tiene una propiedad llamada nonEnum.

Así que esto se podría trabajar:

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

También podría escribir esta función como esta:

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

jsFiddle Demo

+2

debe marcar esto como la respuesta correcta, @ Lorenzo-c. – jackyalcine

Cuestiones relacionadas