- for…in循环:会遍历对象自身的属性,以及原型属性,for…in 循环只遍历可枚举(不包括 enumerable为 false )属性。像 Array 和 Object 使用内置构造函数所创建的对象都会继承自 Object.prototype 和 String.prototype 的不可枚举属性;
- Object.key():可以得到自身可枚举的属性,但得不到原型链上的属性;
- Object.getOwnPropertyNames():可以得到自身所有的属性(包括不可枚举),但得不到原型链上的属性, Symbols 属性也得不到.
- Reflect.ownKeys:该方法用于返回对象的所有属性,基本等同于 Object.getOwnPropertyNames() 与 Object.getOwnPropertySymbols 之和。