7

definePropertyを使用して、作成された属性がfor ...に表示されないようにしようとしていますが、動作しません。このコードは正しいですか?javascript definePropertyで属性を列挙できないようにする

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

答えて

17

ItemnonEnumcheck it out)という名前のプロパティを持っていません。これは、nonEnumというプロパティを持つオブジェクトを作成する(コンストラクタ)関数です。ロレンツォ-C @、正しい答えとしてこれをマークするべき

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

jsFiddle Demo

+2

ので、この1つは動作します:

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

また、このように、この関数を記述することができます。 – jackyalcine

関連する問題