2016-04-10 11 views

答えて

7

プロパティは、それが列挙ではないことを意味し薄暗く表示されている場合。

では、例として、ロケーションオブジェクトを取る::だから、それはあなたがオブジェクトのプロパティをループするときには表示されません

Location logged in console

toStringvalueOf__proto__が表示されないプロパティを列挙する最大:

var keys = []; for (var key in location) { keys.push(key) }; console.log(keys) 
-> ["replace", "assign", "hash", "search", "pathname", "port", "hostname", "host", 
"protocol", "origin", "href", "ancestorOrigins", "reload"] 

あなたはOUを見つけるためにpropertyIsEnumerableを使用することができます

post.title is enumerable

しかし、あなたはdefinePropertyを使って、それを変更することができます:デフォルトでは

location.propertyIsEnumerable("search") 
// true 
location.propertyIsEnumerable("toString") 
// false 

オブジェクトのすべてのプロパティが列挙されている:

オブジェクトの上にあなたのループはときに、プロパティが表示されます場合はトン
Object.defineProperty(post, "author", { 
    value: "John Doe", 
    enumerable: false 
}); 

コンソールにオブジェクトを記録すると、作成者のプロパティが少し明るい色合いの紫色で表示されます。

(これは、速記のバージョンはこのフォーマット機能をサポートしていませんが、我々はdir機能を使用して、小さなオブジェクトの長いバージョンを使用するデベロッパーツールを強制することができるようです。)

author property isn't enumerable

+1

すごいディテール!ありがとう –

関連する問題