1.可枚举属性是指enumerable为true的属性,对于直接赋值和初始化的属性,enumerable默认为true,对于通过Object.defineProperty等定义的属性,默认为false。一旦设置enumerable为false,就表示某些操作不可以操作该属性,该属性就好像“隐藏”起来了,忽略不可枚举属性的操作有如下:
- for…in循环:只遍历对象自身的和继承的可枚举的属性。
- Object.keys():返回对象自身的所有可枚举的属性的键名。
- JSON.stringify():只串行化对象自身的可枚举的属性。
- Object.assign(): 只拷贝对象自身可枚举的属性。
属性的所有权是对象自身决定的,跟原型链无关。
另外Object.prototype上的属性都是不可枚举的。
附MDN统计表格