怎样遍历JS对象中所有的属性 包括enumerable=false的属性

Object.getOwnPropertyNames
■网友
ES6一共有5种方法可以遍历对象的属性。(1)for...infor...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。(2)Object.keys(obj)Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。(3)Object.getOwnPropertyNames(obj)Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。(4)Object.getOwnPropertySymbols(obj)Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol属性。(5)Reflect.ownKeys(obj)Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。
■网友
ES5 定义了 Obejct.getOwnPropertyNames 方法,用于返回对象所有自有属性(包括可枚举属性和不可枚举属性)的键名组成的数组:function foo(d, e, f) {}Object.getOwnPropertyNames(foo).forEach(function(key) { console.log(key)})// length // name // arguments// caller // prototypeES6 还支持 Symbol 类型值做对象的键名,因此还引入了 Object.getOwnPropertySymbols 方法:function foo(d, e, f) {}var isFunction = Symbol(\u0026#39;isFunction\u0026#39;)foo = trueObject.getOwnProperyNames(foo).forEach(function(prop) { console.log(prop)})// length// name// arguments // caller// prototypeObject.getOwnPropertySymbols(foo).forEach(function(prop) { console.log(prop)})// Symbol(isFunction)
■网友
你这需求就是扯淡,那个属性的作用就是使用for in 遍历的时候不会出现,完全的反语言,你这就好像杀人要被抓,你就想怎么样杀人才能不被抓


    推荐阅读