获取对象所有私有成员「兼容到IE、不受枚举和类型的限制」
const ownKeys = function ownKeys(obj) {
if (!isObject(obj)) throw new TypeError('传递的obj不是一个对象')
let keys = Object.getOwnPropertyNames(obj)
if (typeof Symbol !== 'undefined') {
keys = keys.concat(Object.getOwnPropertySymbols(obj))
}
return keys
}
const ownKeys = function ownKeys(obj) {
// 确保传递的是对象
if (!isObject(obj)) throw new TypeError('传递的obj不是一个对象')
// 验证是否支持Reflect
if (typeof Reflect !== 'undefined') return Reflect.ownKeys(obj)
return Object.getOwnPropertyNames(obj)
}
注意:用到isObject方法