弁言
说到罗列,能够很多人都邑想到罗列范例,但在javascript对象中有一个属性为可罗列性,他是什么呢?
观点
可罗列性(enumerable)用来掌握所形貌的属性,是不是将被包含在for…in轮回当中。具体来说,假如一个属性的enumerable为false,下面三个操纵不会取到该属性。
* for..in轮回
* Object.keys要领
* JSON.stringify要领
enumerable “隐身术”
javascript
var o = {a:1, b:2}; o.c = 3; Object.defineProperty(o, 'd', { value: 4, enumerable: false }); o.d // 4 for( var key in o ) console.log( o[key] ); // 1 // 2 // 3 Object.keys(o) // ["a", "b", "c"] JSON.stringify(o // => "{a:1,b:2,c:3}"
上面代码中,d属性的enumerable
为false
,所以平常的遍历操纵都没法猎取该属性,使得它有点像“隐秘”属性,但照样能够直接猎取它的值。
至于for...in
轮回和Object.keys
要领的区分,在于前者包含对象继续自原型对象的
属性,而后者只包含对象本身的
属性。假如须要猎取对象本身的一切属性,不论enumerable的值,能够运用Object.getOwnPropertyNames
要领
来自 搞起博客