2012-04-22 12 views
7

Tôi đang cố gắng sử dụng defineProperty cho các thuộc tính được tạo không xuất hiện trong ... trong chu kỳ, nhưng nó không hoạt động. Mã này có đúng không?javascript defineProperty để tạo một thuộc tính không thể đếm được

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

Trả lời

17

Item không có một tài sản mang tên nonEnum (check it out). Nó là hàm (hàm tạo) sẽ tạo một đối tượng có thuộc tính được gọi là nonEnum.

Vì vậy, một điều này sẽ làm việc:

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

Bạn cũng có thể viết hàm này như sau:

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

jsFiddle Demo

+2

nên đánh dấu đây là câu trả lời đúng, @ lorenzo-c. – jackyalcine

Các vấn đề liên quan