in 自有属性、继承属性返回true
obj.hasOwnProperty(‘key’) 自有属性返回true(Object.creat(null)创建的没有原型的对象无法调用,也不能排除此方法被改写,不推荐使用)
Object.prototype.hasOwnProperty(obj, ‘key’) 自有属性返回true
Object.hasOwn(obj, ‘key’) 静态方法代替hasOwnProperty(推荐)
Object.prototype.propertyIsEnumerable.call(obj, ‘key’) 自有属性且 可枚举返回true
Object.getOwnPropertyDescriptor(obj, ‘key’)?.enumerable 静态方法 自有属性且 可枚举返回true
Object.keys() 返回 自有,可枚举 属性组成的数组(Symbol属性不返回)
Object.getOwnPropertyNames() 返回 自有属性(包括不可枚举)组成的数组(Symbol属性不返回)
Object.getOwnPropertySymbols() 返回 自有Symbol属性(包括不可枚举) 组成的数组
Reflect.ownKeys() 返回 自有所有属性(字符串,Symbol,可枚举,不可枚举)组成的数组
for/in 循环 自有和继承的可枚举属性